webpack配置解决开发环境中的跨域问题

跨域这个事儿是前端避不开的问题,至于为什么产生跨域不是本文的重点,希望有兴趣的朋友可以去尝试搜下相关文章。

 

首先vue-cli2.0搭建的项目下是需要在文件目录config/index.js文件中进行配置,下面例子是将所有请求域名改为“https://interface.meiriyiwen.com/”。


module.exports = {
	dev: {

		// Paths
		assetsSubDirectory: 'static',
		assetsPublicPath: '/',
		proxyTable: {
			'/': {
				target: 'https://interface.meiriyiwen.com/',
				changeOrigin: true,
				secure: false //https接口需要配置该参数
			}
		}
    ...
}

vue-cli3.0搭建的项目下,webpack配置简约化,在自定义的vue.config.js中进行配置即可,看起来也比较清晰。

moudle.exports = {

    ...

     devServer:{

        open:true,
        host:'localhost',
        port:'8080',
        https:false,
        proxy:{
            '/':{
                targer:'代理的域名或服务ip',
                changeOrigin:true
            }
        }
    }
    ...
    
}

这些配置代码其实很简单,但是我就是一直不能起反应。

我开始怀疑自己配置的问题,但是就这么几行代码,和官方文档上面一致,到底是为什么?

我开始搜帖子,但80%的文章都是教你怎么配置,也就是我上面贴出来的配置的内容,说实话基本都是没有帮助。我就一直在找评论,希望找刀也没有解决的伙伴。

发现主要有一下几个方面可以去尝试:

1. 刚配置完,需要重新npm run dev启动项目才能生效,最简单的一步先做了。

2. 检查一下你要代理的服务是否能够访问的通,最简单的方法拿一个get请求直接在浏览器上请求,避免服务本身不通而浪费时间在调试webpack配置上。

3. 我看到有些朋友说webpack与webpack-dev-server的版本关系,导致不可以使用,也可以尝试更新这两个模块的版本后再做尝试。

4. 后面自己想通了。使用这个代理设置的时候,http请求的公共地址一定要和当前本地服务的公共地址保持一致,否则也是不行的。因为proxy只代理当前本地服务,所以当你的http请求是其他服务的话,是代理不了的。

       如:

          vue本地服务为:http://localhost:8888

          使用http请求的时候也得为http://localhost:8888/xxxx(具体接口名)

          proxy代理才会生效

 


版权声明:本文为qq_37028216原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。