vue中axios 302 Found,接收不到参数问题


原因是没有对参数进行序列化

默认情况下,axios将JavaScript对象序列化为JSON。 要以应用程序/ x-www-form-urlencoded格式发送数据。

在拦截器前修改

方法一,用原生js序列化参数

// 创建axios实例
const service = axios.create({ baseURL: process.env.BASE_API, // api 的 base_url timeout: 30000, // 请求超时时间 transformRequest: [function(data) { const str = [] for (const i in data) { str.push(encodeURIComponent(i) + '=' + encodeURIComponent(data[i])) } return str.join('&') }] })

方法二,用qs序列化参数

//npm install axios的时候默认会安装qs
// qs相关的问题请搜索"nodejs qs"或者看这里https://www.npmjs.com/package/qs import qs from 'qs'; const service = axios.create({ baseURL: process.env.BASE_API, // api 的 base_url timeout: 30000, // 请求超时时间 transformRequest: [ function(data) { return qs.stringify(data, { arrayFormat: 'brackets' }) } ] })

网上方案说要加

instance.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';

我没有加,因为我发现默认axios的post就是x-www-form-urlencoded。

到此,这个问题解决了


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM