vue中 关于proxy的理解
问题我们本地调试一般都是npm run serve,然后打开本机ip:8080(localhost:8080)对吧,这时候我们要调接口调试,后端的接口的地址可能在测试环境,也可能是自己电脑的 ip,总之不是你的lcoalhost:8080,那么你调接口就会产生跨域,那么怎么办呢?就需要proxy出场了复习一下跨域的解决方案jsonpcorsNode中间件代理(两次跨域)nginx反向代理CORS支
问题
我们本地调试一般都是 npm run serve
,然后打开 本机ip:8080
(localhost:8080
)对吧,这时候我们要调接口调试,后端的接口的地址可能在测试环境,也可能是自己电脑的 ip,总之不是你的 lcoalhost:8080
,那么你调接口就会产生跨域,那么怎么办呢?就需要proxy出场了
复习一下跨域的解决方案
- jsonp
- cors
- Node中间件代理(两次跨域)
- nginx反向代理
CORS支持所有类型的HTTP请求,是跨域HTTP请求的根本解决方案
JSONP只支持GET请求,JSONP的优势在于支持老式浏览器,以及可以向不支持CORS的网站请求数据。
不管是Node中间件代理还是nginx反向代理,主要是通过同源策略对服务器不加限制。
日常工作中,用得比较多的跨域方案是cors和nginx反向代理
原理
vue 中的 proxy 就是利用了 Node 代理,原理还是因为服务器端没有跨域这一说嘛,也是用了这么一个插件 地址
核心配置
1、你要 http://e.dxy.net/api/test
你可以在本地调 localhost:8080/api/test
,如axios.get('/api/test')
localhost:8080/api/test
-> http://e.dxy.net/api/test
localhost:8080/bcma/api/test
-> http://e.dxy.net/bcma/api/test
//vue-cli3.0 里面的 vue.config.js做配置
devServer: {
proxy: {
'/api': {
target: 'http://e.dxy.net', // 后台接口域名
ws: true, //如果要代理 websockets,配置这个参数
secure: false, // 如果是https接口,需要配置这个参数
changeOrigin: true, //是否跨域
}
}
}
2、当你调接口后端的命名没有统一给接口前加 /api
这类的标识,那么你可以自己加,也就是你可以在本地调 localhost:8080/api/test
,如axios.get('/api/test')
,而你要的目标接口是 http://e.dxy.net/test
,你就可以用 pathRewrite
,遇到 /api
就去找代理 http://e.dxy.net
并且把 /api
重写为 /
localhost:8080/api/test
-> http://e.dxy.net/test
//vue-cli3.0 里面的 vue.config.js做配置
devServer: {
proxy: {
'/api': {
target: 'http://e.dxy.net', // 后台接口域名
ws: true, //如果要代理 websockets,配置这个参数
secure: false, // 如果是https接口,需要配置这个参数
changeOrigin: true, //是否跨域
pathRewrite:{
'^/api': '/'
}
}
}
}
3、这个是对所有的接口都代理的,不止是检测到 /api
的接口,比如:localhost:8080/api/test
-> http://e.dxy.net/api/test
localhost:8080/test
-> http://e.dxy.net/test
devServer: {
proxy: 'http://e.dxy.net'
}
更多推荐
所有评论(0)