什么是options請求乃正?
- 官方解釋:用于獲取目的資源所支持的通信選項辆飘。
用于檢測服務(wù)端對接口等資源的支持情況,包括各種請求方法赞厕、頭部的支持情況,僅作查詢使用
options請求有什么特點(diǎn)
選項 | 有/無 | 說明 |
---|---|---|
Request has body | No | 沒有請求體 |
Successful response has body | No | 成功的響應(yīng)沒有響應(yīng)體 |
Safe | Yes | 安全 |
Idempotent | Yes | 密等性定硝,不變性皿桑,同一個接口請求多少次都一樣 |
Cacheable | No | 不能緩存 |
Allowed in HTML forms | No | 不能在表單里使用 |
什么時候有options請求
首先我們要了解 XMLHttpRequest 是遵守同源策略的,當(dāng)我們需要請求的資源與本資源所在服務(wù)器不同的域喷斋、協(xié)議和端口時唁毒,我們就會發(fā)起一個跨域http請求蒜茴。
規(guī)范要求星爪,對那些可能對服務(wù)器數(shù)據(jù)產(chǎn)生副作用的 HTTP 請求方法(特別是 GET 以外的 HTTP 請求,或者搭配某些 MIME 類型的 POST 請求)粉私,瀏覽器必須首先使用 OPTIONS 方法發(fā)起一個預(yù)檢請求(preflight request)顽腾,從而獲知服務(wù)端是否允許該跨域請求。服務(wù)器確認(rèn)允許之后诺核,才發(fā)起實(shí)際的 HTTP 請求抄肖。
跨域請求分為兩種:簡單請求和預(yù)測請求,簡單請求不會觸發(fā)options請求
當(dāng)請求滿足下述任一條件時窖杀,即應(yīng)首先發(fā)送預(yù)檢請求:
-
使用了下面任一 HTTP 方法:
- PUT
- DELETE
- CONNECT
- OPTIONS
- TRACE
- PATCH
有自定義請求頭
-
Content-Type 的值不屬于下列之一:
- application/x-www-form-urlencoded
- multipart/form-data
- text/plain
請求中的XMLHttpRequestUpload 對象注冊了任意多個事件監(jiān)聽器漓摩。
請求中使用了ReadableStream對象。