還要從后台上傳表單說起
我們后台采用的是vue-element-admin集成方案,所以上傳組件就用的是Element UI的upload組件,我們與后端請求是在 http 的 header 中攜帶 token 做身份校驗,由於上傳音頻是需要給接口傳二進制流文件的形式,所以 upload 組件的 action 直接寫的就是后端接口,其他數據放在 data 中,初始用法如下圖:
后來我們將 http header 中的 token 驗證 改成了 cookie 校驗,
所以看了文檔,需要開啟:with-credentials="true",否則 cookie 帶不上
然后測試發現 cookie 是帶上了,但是后端接口返回的狀態碼是 406(HTTP 406 錯誤是HTTP協議狀態碼的一種,表示無法使用請求的內容特性來響應請求的網頁),除了upload組件這個接口,其他的接口走統一封裝的 fetch 是沒有問題,所以我就對比了兩種請求:
對比發現406的請求中 header中的Accept是 */* ,然后想辦法嘗試改成 “application/json, text/plain, */*”:最后改成如下圖:
發現請求頭狀態碼為 200,問題解決。