一、出現Provisional headers are shown的幾種可能性
- 跨域,請求被瀏覽器攔截
- 請求被瀏覽器插件攔截
- 服務器出錯或者超時,沒有真正的返回
- 強緩存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