vue axios.post显示跨域,发get请求就不会
vue axios.post显示跨域,发get请求就不会。解决办法
·
最近用vue框架,做一个项目,接口都是post请求,我用axios 发送post请求,传参的时候,没对传参的格式进行处理,直接传的对象
就出现了一个奇怪的现象:
在本地,因为使用proxy配置了反向代理,这种传参方式,不会有跨域问题。将项目打包发布到服务器后,服务器和接口服务是主域名相同,分属在不同的二级域名内,接口调用的时候,只要是不传参的都不会跨域,传参的都显示跨域了。
后来跟后台合计这,要不把请求改成get,结果就不跨域了。在这个基础上,再思考,为啥axios调post请求跨域,get请求不跨域呢。查资料,发现axios调post请求传参到时候,需要额外进行处理
这引用别人的话:
跨域分为 简单跨域请求和复杂跨域请求:简单跨域请求是不会发送options请求的。
把request method:options 变成post,查询文档发现默认发送的是字符串格式,需要将其转化成URL的格式,以&进行拼接。
可以引入qs解决问题
npm install qs
import qs from 'qs'
在请求方法中加入 qs.stringify(data) //data 为要传的参数对象
await axios.post('api',qs.stringify(updata)).then(function(res){
}).catch(function (error) {
});
更多推荐
已为社区贡献4条内容
所有评论(0)