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

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

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

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

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

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

回答
編輯回答
陌如玉

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

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

瀏覽器為什么要這么做? 因?yàn)橐?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ī)范要求,對(duì)那些可能對(duì)服務(wù)器數(shù)據(jù)產(chǎn)生副作用的 HTTP 請(qǐng)求方法(特別是 GET 以外的 HTTP 請(qǐng)求,或者搭配某些 MIME 類型的 POST 請(qǐng)求),瀏覽器必須首先使用 OPTIONS 方法發(fā)起一個(gè)預(yù)檢請(qǐng)求(preflight request),從而獲知服務(wù)端是否允許該跨域請(qǐng)求。服務(wù)器確認(rèn)允許之后,才發(fā)起實(shí)際的 HTTP 請(qǐng)求。在預(yù)檢請(qǐng)求的返回中,服務(wù)器端也可以通知客戶端,是否需要攜帶身份憑證(包括 Cookies 和 HTTP 認(rèn)證相關(guān)數(shù)據(jù))。

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

2018年1月25日 14:14