為什么請求會發送兩次-預檢請求opition


我們都知道cors請求分類兩類:簡單請求get,post,option;其他是復雜請求。 詳情查看 https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS

 

場景:很多時候發送一個post請求,結果卻顯示兩個請求(一個option請求,一個post請求)

 一、什么是options請求

OPTIONS請求即預檢請求,用來檢測服務器允許的http方法。

總共會發送兩次請求。當發起跨域請求時,出於安全考慮,達到一定條件,會觸發瀏覽器在正式請求之前,自動先發起OPTIONS請求,也就是第一次請求。

服務器若接受此次跨域請求,那么當options請求成功返回后,瀏覽器繼續發起第二次請求,也就是真正的ajax請求。

 

二、跨域請求觸發的條件

1http方法:PUT/DELETE/CONNECT/OPTIONS/TRACE/PATCH

2、首部字段除以下字段:Accept/Accept-Language/Content-Language/Content-Type/DPR/Downlink/Save-Data/Viewport-Width/Width

3、Content-Type除以下字段:application/x-www-form-urlencoded、multipart/form-data、text/plain

注:通常是content-type: application/json

 

 

Access-Control-Request-Method:該字段是必須的,用來列出瀏覽器的CORS請求會用到哪些HTTP方法。

Access-Control-Request-Headers:該字段是一個逗號分隔的字符串,指定瀏覽器CORS請求會額外發送的頭信息字段。

一旦服務器通過了"預檢"請求,以后每次瀏覽器正常的CORS請求,就都跟簡單請求一樣,會有一個Origin頭信息字段。

 

 

 

 

 

 

 

 

 

 

 

 

 

預檢,返回響應頭,沒返回實體內容

 

 

 

 

 

 

 

 


免責聲明!

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



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