一次ajax調用,卻發送了二次http請求(一次爲請求方法爲option,一次爲正常請求)

直接上證據,截圖來自於chrowm瀏覽器-開發者工具-network
這裏寫圖片描述

會發現其中一次請求 Method是OPTIONS
這裏寫圖片描述

另外一次是正常請求
這裏寫圖片描述

原因如下:
瀏覽器對複雜跨域請求的處理,在發送真正的請求前, 會先發送一個方法爲OPTIONS的預請求(preflight request), 用於試探服務端是否能接受真正的請求,如果options獲得的迴應是拒絕性質的,比如404\403\500等http狀態,就會停止post、put等請求的發出。

有三種方式會導致這種現象:
1、請求方法不是GET/HEAD/POST
2、POST請求的Content-Type並非application/x-www-form-urlencoded, multipart/form-data, 或text/plain
3、請求設置了自定義的header字段

我的Content-Type設置爲“application/json;charset=utf-8”並且自定義了header選項導致了這種情況。

參考文章: https://blog.csdn.net/weixin_38958405/article/details/81016246

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章