鍍金池/ 問答/Linux  網(wǎng)絡(luò)安全  HTML/ 請教大家一個跨域相關(guān)的問題,cors 的 preflight 請求可以避免什么樣

請教大家一個跨域相關(guān)的問題,cors 的 preflight 請求可以避免什么樣的問題?

最近做一個項目時,涉及到了preflight 預(yù)檢這個機(jī)制。產(chǎn)生了一個疑惑:

瀏覽器為什么非要通過預(yù)檢來和服務(wù)器確認(rèn)請求是否可用呢?而不是直接將請求發(fā)送給服務(wù)器端?請求是否會對服務(wù)器造

成影響這個已經(jīng)不屬于瀏覽器端的范疇了,那么為什么瀏覽器中卻會去規(guī)定要先發(fā)送一個預(yù)請求?如此做的意義是什么

呢? 有了解相關(guān)知識的前輩嗎?可以分享一下相關(guān)的例子嗎?。先在此謝過大家。

回答
編輯回答
陌如玉

探測以下允不允許這些報頭,該地址支持什么method,有沒有觸發(fā)同源保護(hù)等等,否則貿(mào)貿(mào)然請求過去,萬一不行,很浪費(fèi)資源和時間。

2017年12月14日 12:12
編輯回答
久愛她

瀏覽器為什么要這么做? 因為規(guī)范/標(biāo)準(zhǔn)規(guī)定
引用一段規(guī)范
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS

跨域資源共享標(biāo)準(zhǔn)新增了一組 HTTP 首部字段,允許服務(wù)器聲明哪些源站有權(quán)限訪問哪些資源。另外,規(guī)范要求,對那些可能對服務(wù)器數(shù)據(jù)產(chǎn)生副作用的 HTTP 請求方法(特別是 GET 以外的 HTTP 請求,或者搭配某些 MIME 類型的 POST 請求),瀏覽器必須首先使用 OPTIONS 方法發(fā)起一個預(yù)檢請求(preflight request),從而獲知服務(wù)端是否允許該跨域請求。服務(wù)器確認(rèn)允許之后,才發(fā)起實際的 HTTP 請求。在預(yù)檢請求的返回中,服務(wù)器端也可以通知客戶端,是否需要攜帶身份憑證(包括 Cookies 和 HTTP 認(rèn)證相關(guān)數(shù)據(jù))。

劃紅線的是可以避免的問題

2018年1月25日 14:14