HTTP options預請求


什么是復雜請求?

1、非head、get、post請求方法;
2、Content-Type 的值不屬於下列之一:application/x-www-form-urlencoded、multipart/form-data、text/plain;
3、人為設置了以下集合之外首部字段:Accept/Accept-Language/Content-Language/Content-Type/DPR/Downlink/Save-Data/Viewport-Width/Width;

什么是預請求?

對那些可能對服務器數據產生副作用的 HTTP 請求方法(特別是 GET 以外的 HTTP 請求,或者搭配某些 MIME 類型的 POST 請求),瀏覽器必須首先使用 OPTIONS 方法發起一個預檢請求(preflight request),從而獲知服務端是否允許該跨域請求。服務器基於從預檢請求頭部獲得的信息來判斷,是否接受接下來的實際請求。

預檢請求頭request header的關鍵字段

Access-Control-Request-Method:告訴服務器實際請求所使用的 HTTP 方法
Access-Control-Request-Headers:告訴服務器實際請求所攜帶的自定義首部字段,本次實際請求首部字段中content-type為自定義

預檢響應頭response header的關鍵字段:

Access-Control-Allow-Methods:返回了服務端允許的請求,包含GET/HEAD/PUT/PATCH/POST/DELETE
Access-Control-Allow-Credentials:允許跨域攜帶cookie(跨域請求要攜帶cookie必須設置為true)
Access-Control-Allow-Origin:允許跨域請求的域名,這個可以在服務端配置一些信任的域名白名單
Access-Control-Request-Headers:客戶端請求所攜帶的自定義首部字段content-type

優化OPTIONS請求

Access-Control-Max-Age這個響應首部表示 preflight request (預檢請求)的返回結果(即 Access-Control-Allow-Methods 和Access-Control-Allow-Headers 提供的信息) 可以被緩存的最長時間,單位是秒。(MDN)


免責聲明!

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



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