解決前端Provisional headers are shown問題


一、出現Provisional headers are shown的幾種可能性

  1. 跨域,請求被瀏覽器攔截
  2. 請求被瀏覽器插件攔截
  3. 服務器出錯或者超時,沒有真正的返回
  4. 強緩存from disk cache或者from memory cache,此時也不會顯示

  這幾種都是前端的問題,我們都嘗試了,對我們的問題沒有效果

二、還是后端的鍋

  前端發送post請求,用的是json格式,但是沒請求到后端,也沒有返回狀態嗎,最開始以為是前端跨域問題,然后后前端大佬一起找前端的錯誤,嘗試了網上的各種方法都沒有效果,最后發現居然是后端的鍋。
在filter中設置請求頭的時候,沒有加入content-type這個請求頭,導致前端傳不了json數據,因為瀏覽器是根據option返回的結果來確定請求參數的,所以前端瀏覽器發送option時,后端response的Access-Control-Allow-Headers中沒有content-type,導致瀏覽器post請求content-type,被認為是非法的,直接瀏覽器攔截了(瀏覽器和postman這些區別就在於,瀏覽器在正式請求之前會發送一個option試探,通過option試探來確定需要的請求參數)。正確的設置應該為

response.setHeader("Access-Control-Allow-Origin", origin);
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "x-requested-with,Authorization,token, content-type"); //這里要加上content-type 
response.setHeader("Access-Control-Allow-Credentials", "true");

轉載自:https://blog.csdn.net/qq_42396168/article/details/105547334


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM