ajax 加入自定義請求頭,出現兩次請求 預請求OPTIONS 後端處理

1.tp5
處理方式 直接攔截並且返回
use think\Response;
use think\exception\HttpResponseException;
header('Access-Control-Allow-Origin:*');
header('Access-Control-Allow-Headers:*');//
header('Access-Control-Max-Age:100');//
  if (strtoupper(request()->method()) == "OPTIONS") {
      throw new HttpResponseException(Response::create()->send());
  }

tp5處理參考地址

2.請求頭
【HTTP】如何避免OPTIONS請求?
非簡單請求 會在正式通信之前,增加一次HTTP請求,稱之爲預檢請求。瀏覽器會先發起OPTIONS方法到服務器,以獲知服務器是否允許該實際請求。
後端在請求的返回頭部添加:

Access-Control-Max-Age:(number)  。數值代表preflight request  (預檢請求)的返回結果(即 Access-Control-Allow-Methods 和Access-Control-Allow-Headers 提供的信息) 可以被緩存多久,單位是秒。

例如:將預檢請求的結果緩存10分鐘:

Access-Control-Max-Age: 600 

不同瀏覽器有不同的上限。在Firefox中,上限是24h(即86400秒),而在Chromium 中則是10min(即600秒)。Chromium 同時規定了一個默認值 5 秒。
如果值爲 -1,則表示禁用緩存,每一次請求都需要提供預檢請求,即用OPTIONS請求進行檢測。

Access-Control-Max-Age方法對完全一樣的url的緩存設置生效,多一個參數也視爲不同url。也就是說,如果設置了10分鐘的緩存,在10分鐘內,所有請求第一次會產生options請求,第二次以及第二次以後就只發送真正的請求了。
————————————————
版權聲明:本文爲CSDN博主「smart_dream」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/xiaoxiong_jiaxin/java/article/details/88060663

 

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