跨域这个事儿是前端避不开的问题,至于为什么产生跨域不是本文的重点,希望有兴趣的朋友可以去尝试搜下相关文章。
首先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代理才会生效