說說對options 的理解

什么是options請求,簡單的說就是可以用 options 請求去嗅探某個請求在對應的服務器中都支持哪種請求方法。
一般我們不會自己手動的去觸發options請求,一般都是瀏覽器自動去完成處理的。當產生一些跨域的情況下,發起復雜請求時,對那些可能對數據庫數據產生副作用的請求時。瀏覽器會首先發送一個options請求,得到服務端許可的后才會發送真實的請求。

簡單請求

簡單請求不會觸發options預請求,簡單請求:

  • 請求方式為GET、POST、HEAD
  • Content-type的值為application/x-www-form-urlencoded、multipart/form-data、text/plain三個中的某一個
  • 人為設置了規范集合之內的請求頭字段,如Accept/Accept-Language/Content-Language/Content-Type/DPR/Downlink/Save-Data/Viewport-Width/Width
復雜請求
  • 使用除開簡單請求方式外的請求
  • 設置了非規定的集合之內的請求頭字段,比如經常自定義了token、user等
  • Content-type的值不屬于application/x-www-form-urlencoded、multipart/form-data、text/plain
options請求頭關鍵字段
Access-Control-Request-Method: POST // 通知服務器,真實請求將采用POST
Access-Control-Request-Header: token, Content-type // 通知服務器,真實請求攜帶的自定義頭部字段
options返回頭關鍵字段

Access-Control-Allow-Methods 服務器運行客戶端使用什么請求方式
Access-Control-Allow-Origin 允許跨域的域名,允許所以跨域這個只為*
Access-Control-Max-Age 預請求能夠緩存多久
Access-Control-Request-Headers 將實際請求所攜帶的首部字段告訴服務器

options優化

如果所有接口都使用options請求,會增加請求次數,延遲真實請求發起時間,影響性能

  • 把一些不要的復雜請求轉為簡單請求
  • 設置options緩存 Access-Control-Max-Age 字段
小結

options請求就是一個預請求,可用于檢測服務器允許的 http 方法。為了安全瀏覽器會發起options(CORS)預檢請求,服務器同意后,客戶端才發送真實請求

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。