axios跨域不成功的一个小问题 Vue CLI3跨域请求,Vue proxy配置
Vue项目,因为前后端分离,所以在请求后端接口时,时常遇到跨站问题,真心入坑啊1、如果前后端项目部署时候不在同域名下,前端不用配置,后端做好CORS配置即可,后端配置可参考https://blog.csdn.net/envon123/article/details/832702772、如果前后端部署在同一个域名,就不会有跨域问题,但一般是生产环境部署是同一个域名下,但在开发环境时,并不是同域名..
Vue项目,因为前后端分离,所以在请求后端接口时,时常遇到跨站问题,真心入坑啊
1、如果前后端项目部署时候不在同域名下,前端不用配置,后端做好CORS配置即可,后端配置可参考https://blog.csdn.net/envon123/article/details/83270277
2、如果前后端部署在同一个域名,就不会有跨域问题,但一般是生产环境部署是同一个域名下,但在开发环境时,并不是同域名呀,所以开发时调用接口返回类似“No ‘Access-Control-Allow-Origin’ header is present …”错误
针对开发时要解决的跨域问题,Vue的webpack模板就有相关的解决方案,链接:http://vuejs-templates.github.io/webpack/proxy.html ,
如果是Vue CLI 3 ,也有相应解决方案,链接:https://cli.vuejs.org/zh/config/#devserver-proxy ,如图:
明明配置好了,却不行,我改了好久看了好多才发现但请求还是报错,其实忽略了一个问题,接口url要写相对路径,
Vue项目请求接口,一般使用axios这个类库,看一下示例代码:
标红的地方一定不能写不能写
如上面代码所示,url 要写相对路径,如 ‘/papi/adslot/getAdList’,这样才会请求当前域,假如本地运行是 http://localhost:8080,拼接后就是 http://localhost:8080/papi/adslot/getAdList ,这样就没跨域了,前面配置proxy才能拦截请求转向真正的后端地址,如果直接写http开头的,就是直接请求对应域名去了,与 localhost:8080 不同域,也没有用上前面的 proxy配置。
感谢 ENVON https://blog.csdn.net/envon123/article/details/83270547
更多推荐
所有评论(0)