最近用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) {
});

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐