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