為什么會有OPTIONS請求

Options 請求十办,我所了解的就是在發(fā)起跨域的非簡單請求時,會先發(fā)起一個 options 預檢請求(瀏覽器是自動發(fā)起的),去檢測目標服務器是支持跨域請求。

什么是 Options 請求路克?

  1. 獲取服務器支持的 http 請求方法

響應報文包含一個 Allow 首部字段樟结,該字段的值表明了服務器支持的所有 HTTP 方法

  1. 跨域請求的預檢請求

Options 預檢請求

在 CORS 中,可以使用 OPTIONS 方法發(fā)起一個預檢請求精算,以檢測實際請求是否可以被服務器所接受瓢宦。

關鍵請求頭

Options 請求會攜帶幾個關鍵的 Request Header

Request Header 作用
Access-Control-Request-Method 告訴服務器實際請求所使用的 HTTP 方法
Access-Control-Request-Headers 告訴服務器實際請求所攜帶的自定義首部字段
Origin 發(fā)起請求的域名 (協(xié)議、域名灰羽、端口號)

服務器基于從預檢請求獲得的信息來判斷驮履,是否接受接下來的實際請求。

關鍵響應頭

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

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-Allow-Headers 客戶端請求所攜帶的自定義首部字段

此次 OPTIONS 請求返回了響應頭的內容,但沒有返回響應實體 response body 內容前鹅。

Options 請求后的第二次請求

這個才是我們真正要發(fā)送的請求

關于 Options 請求

Options 請求是瀏覽器自動發(fā)起的

跨域請求觸發(fā)了瀏覽器自動發(fā)起 OPTIONS 請求。

跨域請求時峭梳,OPTIONS 請求觸發(fā)條件

跨域的非簡單請求會觸發(fā)預檢請求

那么滿足哪些條件的請求是非簡單請求呢舰绘?

  1. 使用了下面任意一個請求方法

PUT/DELETE/CONNECT/OPTIONS/TRACE/PATCH

  1. 人為設置了以下集合之外首部字段

Accept/Accept-Language/Content-Language/Content-Type/DPR/Downlink/Save-Data/Viewport-Width/Width

  1. Content-Type 的值不屬于下列之一:

application/x-www-form-urlencoded、multipart/form-data葱椭、text/plain

優(yōu)化 Options 請求

可見一旦達到觸發(fā)條件捂寿,跨域請求便會一直發(fā)送 2 次請求,這樣增加的請求數(shù)是否可優(yōu)化呢孵运?答案是可以秦陋,OPTIONS 預檢請求的結果可以被緩存。

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

如果值為 -1,則表示禁用緩存旷赖,每一次請求都需要提供預檢請求顺又,即用 OPTIONS 請求進行檢測。

總結

OPTIONS 請求即預檢請求等孵,可用于檢測服務器允許的 http 方法稚照。當發(fā)起跨域請求時,由于安全原因俯萌,觸發(fā)一定條件時瀏覽器會在正式請求之前自動先發(fā)起 OPTIONS 請求果录,即 CORS 預檢請求,服務器若接受該跨域請求咐熙,瀏覽器才繼續(xù)發(fā)起正式請求弱恒。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市糖声,隨后出現(xiàn)的幾起案子斤彼,更是在濱河造成了極大的恐慌分瘦,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件琉苇,死亡現(xiàn)場離奇詭異嘲玫,居然都是意外死亡,警方通過查閱死者的電腦和手機并扇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進店門去团,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人穷蛹,你說我怎么就攤上這事土陪。” “怎么了肴熏?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵鬼雀,是天一觀的道長。 經(jīng)常有香客問我蛙吏,道長源哩,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任鸦做,我火速辦了婚禮励烦,結果婚禮上,老公的妹妹穿的比我還像新娘泼诱。我一直安慰自己坛掠,他們只是感情好,可當我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布治筒。 她就那樣靜靜地躺著屉栓,像睡著了一般。 火紅的嫁衣襯著肌膚如雪矢炼。 梳的紋絲不亂的頭發(fā)上系瓢,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天,我揣著相機與錄音句灌,去河邊找鬼夷陋。 笑死,一個胖子當著我的面吹牛胰锌,可吹牛的內容都是我干的骗绕。 我是一名探鬼主播,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼资昧,長吁一口氣:“原來是場噩夢啊……” “哼酬土!你這毒婦竟也來了?” 一聲冷哼從身側響起格带,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤撤缴,失蹤者是張志新(化名)和其女友劉穎刹枉,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體屈呕,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡微宝,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了虎眨。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蟋软。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖嗽桩,靈堂內的尸體忽然破棺而出岳守,到底是詐尸還是另有隱情,我是刑警寧澤碌冶,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布湿痢,位于F島的核電站,受9級特大地震影響扑庞,放射性物質發(fā)生泄漏蒙袍。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一嫩挤、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧消恍,春花似錦岂昭、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至佣赖,卻和暖如春恰矩,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背憎蛤。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工外傅, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人俩檬。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓萎胰,卻偏偏與公主長得像,于是被迫代替她去往敵國和親棚辽。 傳聞我的和親對象是個殘疾皇子技竟,可洞房花燭夜當晚...
    茶點故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內容