前端解决跨域--proxy
vue的proxy代理,解决跨域问题
·
一:普通代理
vue 中的 proxy 是利用了 Node 代理
vue.config.js 中配置:
module.exports = {
devServer: {
proxy: {
'/api': {
target: 'http://e.dxy.net', // 后台接口域名
ws: true, //如果要代理 websockets,配置这个参数
secure: false, // 如果是https接口,需要配置这个参数
changeOrigin: true, //是否跨域
}
}
}
}
1;假设你要调取的接口是 http://e.dxy.net/api/test
2:axios.get(’/api/test’)
3:我们一般调接口 axios.get(’/api/test’),这样调是自动请求的当前域名,也就是本地就调用
localhost:8080/api/test
4:配置代理后,会做如下转发:
localhost:8080/api/test => http://e.dxy.net/api/test
二:用到pathRewrite的情况
1:当你调接口后端的命名没有统一给接口前加 /api 这类的标识,那么你可以自己加
2:假设你
有一个的接口是 http://e.dxy.net/test,
有一个的接口是 http://e.dxy.net/node,
有一个的接口是 http://e.dxy.net/list
3:如果还是上面的配置,调用axios.get(’/test’),就会出现404的情况,因为代理中配置的是”/api“,不会走代理,此时需要用到 pathRewrite
4:我们将配置改为如下:
devServer: {
proxy: {
'/mine': {
target: 'http://e.dxy.net', // 后台接口域名
ws: true, //如果要代理 websockets,配置这个参数
secure: false, // 如果是https接口,需要配置这个参数
changeOrigin: true, //是否跨域
pathRewrite:{
'^/mine': '/'
}
}
}
}
5:此时调用例子中的接口我们可以手动加类似标识,保持和配置一致:
axios.get('/mine/test')
axios.get('/mine/node')
axios.get('/mine/list')
6:此时的转发变成:
localhost:8080/mine/test => http://e.dxy.net/mine/test => http://e.dxy.net/test
7:这里pathRewrite配置的意思是将路径中的/mine重写为/
8:这样就能解决跨域啦。
(注:在浏览器调试工具的network中看到的路径还是 localhost:8080/mine/test)
三:全局代理
devServer: {
proxy: 'http://e.dxy.net'
}
参考资料:https://blog.csdn.net/weixin_43972437/article/details/107291071
更多推荐
已为社区贡献1条内容
所有评论(0)