一次ajax調用,發送了兩次請求(一次為請求方法為option,一次為正常請求)


在項目了開發時遇見一個奇怪的現象,就是我在js里面發送一次ajax請求,在瀏覽器network那邊查詢到的卻是發送了兩次請求,第一次的Request Method參數為OPTIONS,第二次的Request Method為我正常設定的POST。

在參考了:https://blog.csdn.net/cc1314_/article/details/78272329  這邊博客以后終於找到了原因。

瀏覽器對復雜跨域請求的處理,在發送真正的請求前, 會先發送一個方法為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-Encoding

設置為

"gzip"

導致了這種情況。


免責聲明!

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



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