vue的proxy代理使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue的proxy代理使用相关的知识,希望对你有一定的参考价值。

参考技术A

vue 中的 proxy 就是利用了 Node 代理,原理还是因为服务器端没有跨域这一说嘛,也是用了这么一个插件 地址

‘/api’:是指遇到这个字符开头的话,在这个字符前面加上target里面的ip或者域名。

举例:
①登录接口: http://1.2.3.4:5000/login
…中间省略了配置过程…
②npm run serve: Local: http://localhost:8080/
③点击后发送的登录请求: http://localhost:8080/api/login
④/api 的作用就是将 /api 前的localhost:8080变成target的内容 http://1.2.3.4:5000/
⑤完整的路径变成了 http://1.2.3.4:5000/api/login
⑥实际接口当中没有这个api,所以 pathwrite 重写就解决这个问题的。
⑦ pathwrite 识别到api开头就会把/api重写成空,那就是不存在这个/apil了,完整的路径又变成: http://1.2.3.4:5000/login

配置代理后,会做如下转发:
localhost:8080/api/test -> http://e.dxy.net/api/test
localhost:8080/bcma/api/test -> http://e.dxy.net/bcma/api/test

有新手朋友可能会问:这样做是不是只是本地调试这样做,线上怎么办呢?
我们一般调接口 axios.get(\'/api/test\') ,这样调是自动请求的当前域名,也就是本地就调用 localhost:8080 ,到了线上就是你们自己的服务域名,所以这个只是为了本地调试使用。当然,如果你要同时调用很多个不同的域名服务,那你调用的时候就要把相关的域名明确写出来,如 axios.get(\'http://e.dxy.net/api/test\')

当你调接口后端的命名没有统一给接口前加 /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

这个是对所有的接口都代理的,不止是检测到 /api 的接口,比如:
localhost:8080/api/test -> http://e.dxy.net/api/test
localhost:8080/test -> http://e.dxy.net/test

Vue CLI 配置参考

以上是关于vue的proxy代理使用的主要内容,如果未能解决你的问题,请参考以下文章

vue-cli使用proxy代理

axios踩坑记录+拦截器使用+vue cli代理跨域proxy

vue配置反向代理 devServer配置proxy

vue-cli下配置webpack的proxy参数进行反向代理

vue 数据代理帮助类 ux-data-proxy

vue 设置代理