五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

跨域時(shí),遇到的options 請(qǐng)求詳解

2022-10-09 14:35 作者:doubleyong  | 我要投稿

背景:

在項(xiàng)目跨域中,發(fā)送post 請(qǐng)求時(shí);?發(fā)現(xiàn)服務(wù)器收到了兩次請(qǐng)求,一次options請(qǐng)求,一次post請(qǐng)求;


本文就是針對(duì)這個(gè)options請(qǐng)求,進(jìn)行分析.



1、什么是options請(qǐng)求?


HTTP 的 OPTIONS 方法?用于獲取目的資源所支持的通信選項(xiàng)??蛻舳丝梢詫?duì)特定的 URL 使用 OPTIONS 方法,也可以對(duì)整站(通過(guò)將 URL 設(shè)置為“*”)使用該方法。

mdn web doc



語(yǔ)法:

  • OPTIONS /index.html HTTP/1.1OPTIONS * HTTP/1.1


2、options 應(yīng)用場(chǎng)景


場(chǎng)景一:檢測(cè)服務(wù)器所支持的請(qǐng)求方法


可以使用 OPTIONS 方法對(duì)服務(wù)器發(fā)起請(qǐng)求,以檢測(cè)服務(wù)器支持哪些 HTTP 方法:

  • curl?-X?OPTIONS?http://example.org?-i


解析:curl 是一個(gè)指令,在類似liunx操作系統(tǒng)中,可以使用curl指令去發(fā)起請(qǐng)求



場(chǎng)景二:CORS 中的預(yù)檢請(qǐng)求

在 CORS 中,可以使用 OPTIONS 方法發(fā)起一個(gè)預(yù)檢請(qǐng)求,以檢測(cè)實(shí)際請(qǐng)求是否可以被服務(wù)器所接受。


解析:

cors 是解決跨域的一種常見(jiàn)方式,至于為什么會(huì)有跨域,這就是瀏覽器的一種安全策略:瀏覽器同源策略;這里就不贅述了。


跨域資源共享(CORS)是一種機(jī)制,它使用額外的HTTP頭來(lái)告訴瀏覽器讓運(yùn)行在一個(gè)origin (domain)上的Web應(yīng)用被準(zhǔn)許訪問(wèn)來(lái)自不同源服務(wù)器上的指定的資源。當(dāng)從與該資源本身所在的服務(wù)器不同的域或端口請(qǐng)求一個(gè)資源時(shí),資源會(huì)發(fā)起一個(gè)跨域HTTP請(qǐng)求。


比如,站點(diǎn)http://domain-a.com 的某 HTML頁(yè)面通過(guò)的src請(qǐng)求 http:ldomain-b.com/image.jpg 。網(wǎng)絡(luò)上的許多頁(yè)面都會(huì)加載來(lái)自不同域的CSS樣式表,圖像和腳本等資源。



出于安全原因,瀏覽器限制從腳本內(nèi)發(fā)起的跨源HTTP請(qǐng)求。例如XMLHttpRequest和Fetch API遵循同源策略。


這意味著使用這些API的Web應(yīng)用程序只能從加載應(yīng)用程序的同一個(gè)域請(qǐng)求HTTP資源,除非使用CORS頭文件。




瀏覽器將CORS請(qǐng)求分為兩類:簡(jiǎn)單請(qǐng)求(simple request)和?簡(jiǎn)單請(qǐng)求(not-simple-request),簡(jiǎn)單請(qǐng)求瀏覽器不會(huì)預(yù)檢,??簡(jiǎn)單請(qǐng)求會(huì)預(yù)檢。



同時(shí)滿?下列三?條件,就屬于簡(jiǎn)單請(qǐng)求,否則屬于?簡(jiǎn)單請(qǐng)求


  1. 請(qǐng)求?式只能是:GET、POST、HEAD


2.HTTP請(qǐng)求頭限制這?種字段:Accept、Accept-Language、Content-Language、Content-Type、Last-Event-ID


3.Content-type只能?。篴pplication/x-www-form-urlencoded、multipart/form-data、text/plain



?3. 優(yōu)化OPTIONS請(qǐng)求:Access-Control-Max-Age 或者 避免觸發(fā)


可見(jiàn)一旦達(dá)到觸發(fā)條件,跨域請(qǐng)求便會(huì)一直發(fā)送2次請(qǐng)求,這樣增加的請(qǐng)求數(shù)是否可優(yōu)化呢?答案是可以,OPTIONS預(yù)檢請(qǐng)求的結(jié)果可以被緩存。


Access-Control-Max-Age這個(gè)響應(yīng)首部表示 preflight request (預(yù)檢請(qǐng)求)的返回結(jié)果(即 Access-Control-Allow-Methods 和Access-Control-Allow-Headers 提供的信息)?可以被緩存的最長(zhǎng)時(shí)間,單位是秒。


圖片


如果值為 -1,則表示禁用緩存,每一次請(qǐng)求都需要提供預(yù)檢請(qǐng)求,即用OPTIONS請(qǐng)求進(jìn)行檢測(cè).


4. 總結(jié)


盡量避免不要觸發(fā)OPTIONS請(qǐng)求, 即用OPTIONS請(qǐng)求進(jìn)行檢測(cè)。


在其他場(chǎng)景,比如跨域并且業(yè)務(wù)有自定義請(qǐng)求頭的話就很難避免了。現(xiàn)在使用的axios或者superagent等第三方ajax插件,如果出現(xiàn)CORS預(yù)檢請(qǐng)求,可以看看默認(rèn)配置或者二次封裝是否規(guī)范。




茍有恒?,?何必三更眠五更起關(guān)注我,一起學(xué)習(xí)吧
鼓勵(lì)一下,賜個(gè)贊?和?在看

圖片


跨域時(shí),遇到的options 請(qǐng)求詳解的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
宣城市| 河北区| 图片| 沙坪坝区| 孟州市| 博兴县| 麦盖提县| 肥东县| 德惠市| 梅州市| 郧西县| 云霄县| 云阳县| 佛山市| 宜黄县| 织金县| 安仁县| 鹤岗市| 政和县| 濮阳市| 敦煌市| 洪湖市| 桦南县| 长宁区| 明光市| 新建县| 文昌市| 天门市| 探索| 内黄县| 秀山| 新乡市| 汉川市| 大兴区| 栾城县| 巫溪县| 色达县| 天津市| 泾源县| 绥滨县| 孙吴县|