最近在项目中遇到了跨域的问题,记录一下自己在遇到跨域的问题遇到的坑,以及是如何解决的。
网络上搜索出来的东西都大差不差,但是感觉对我最有用的方式是在vue.config文件中devServer属性中设置proxy属性。
众所周知Proxy可以理解成,在目标对象之前架设一层 “拦截”,当外界对该对象访问的时候,都必须经过这层拦截,而Proxy就充当了这种机制,类似于代理的含义,它可以对外界访问对象之前进行过滤和改写该对象。
所以我们可以设置proxy属性来给我们设置一层代理拦截器,如:
devServer: {
proxy: {
'/test': {
target: 'https://www.baidu.com',
changeOrigin: true,
pathRewrite: {
'^/test': ''
}
}
}
}
而我们在代码中就需要写http请求就可以写成:
axios.post('/tset/test1/test1', params, APPLICATION_FORM_HEADER);
其中第一个test就为访问proxy的前缀,只要你有这个前缀proxy就会给你自动拼接上https://www.baidu.com的前缀,就可以成功解决跨域问题,这是在本地如何调试,如果需要布置在服务器上,需要在gateway里配置路径。