原文: https://www.jianshu.com/p/5ef2b17f9b25
这里的vue代理是 vue静态服务器做代理。使用的是 http-proxy-middleware 这个模块(这个模块相当于是node.js的一个插件)。
注:
1、我的 api='/rng'
我的请求地址 ${api}/xxxx/xxx ,请求地址就为 '/rng/xxxx/xxx'
当node服务器 遇到 以 '/rng' 开头的请求 ,就会把 target 字段加上,那么我的请求地址就为 http://45.105.124.135:8081/rng/xxxx/xxx
2、 pathRewrite 意思是 把 /rng 替换为 空,那么我的请求地址就为 http://45.105.124.130:8081/xxxx/xxx (用在如果你的实际请求地址没有 rng 的情况)(对这一块的理解不太透彻,即使把'/rng' 的名重写成了'/' 但是在请求的接口里也会显示 '/rng')
在开发环境,vue-cli 会帮我们创建一个开发服务器( http://localhost:8080 ),因此,我们请求后端服务器的时候,可能会出现跨域问题,因为跨域的三要素:域名、端口、协议其一不同。
完整的请求地址:
我的这个地址,里面本身就携带有 api 字段的
利用 vue-cli 中的 devServer 配置
记住,如果你的地址没有类似我那个地址那样,有个 api 作为标识的,你可以手动在地址上加上一些标识,然后利用 pathRewrite 再抹掉即可。
一般不会这么做,这样做意义也不大。因为这么做的话,不单单ajax请求都用的远程,连js、css、图片等其他资源都是远程返回的。。。
用了这个方法,在开发阶段,就不用设置 axios 中的 baseUrl 了,或者这样设置:
然后开发阶段,你的一些ajax的请求的 url 就会匹配到 /api 开头,设置 proxy了
千万不要这么设置:
看似匹配到了,实际上没有生效。。。(我也不知道为什么,知道的同学说一下)
实际上,这里是看不到的。。
因为,F12 这里的这个请求,实际上是发给了 本地的临时服务器,再由本地的服务器发送给远程服务器。
可以这么理解:本地服务器将F12的这个请求拦截了,然后自己偷偷改掉 url,再请求的远程服务器。
正因为本地服务器脱离浏览器的束缚,解决了跨域问题!
项目启动以后按F12 点选Network然后点击 XHR 就是所有的后端接口地址,然后点击一个访问的地址,右边出现headers里面的 Request URL 后面的就是真实的url地址了
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)