http-server --cors啟動(dòng)為啥訪問還是跨域信殊?preflight又是什么東西?

最近在研究京東的微前端框架@micro-zoe/micro-app

按照文檔配好主應(yīng)用和微應(yīng)用以后,將微應(yīng)用打包編譯拣帽,使用http-server --cors啟動(dòng)后疼电,在主應(yīng)用中訪問時(shí),調(diào)某個(gè)接口報(bào)錯(cuò)了:


上圖是一個(gè)動(dòng)態(tài)國際化資源的請(qǐng)求减拭,顯示跨域了 這就很奇怪了蔽豺,其他靜態(tài)資源能正常拉取,證明子應(yīng)用是支持跨域訪問的拧粪,但是這個(gè)請(qǐng)求掛掉了

這個(gè)報(bào)錯(cuò)也很離譜:

Cross-Origin Resource Sharing error: HeaderDisallowedByPreflightResponse

從報(bào)錯(cuò)看應(yīng)該還是跨域的問題修陡,我就猜測(cè)是 http-server這個(gè)工具本身的問題

進(jìn)行了大量的搜索,在他的github上找到一個(gè)issue:[Question] How to set cors headers?

這里面的一個(gè)回答引起了我的注意??


這里說 --cors=xxx 就可以在 allow header 上加一個(gè) xxx可霎,

所以我試著將我的子應(yīng)用啟動(dòng)命令改了一下:

- http-server --cors
+ http-server --cors='*'

然后再訪問魄鸦,居然就好了??

太離譜了。癣朗。拾因。

雖然解決了問題,但心里面還是一堆疑惑旷余,

比如绢记,上面那個(gè)報(bào)錯(cuò)里面的 preflight是個(gè)啥?

為了搞清這個(gè)報(bào)錯(cuò)正卧,查了很多資料蠢熄,下面記錄一下我學(xué)到的一些東西

預(yù)檢請(qǐng)求preflight

Preflight請(qǐng)求是一種用于CORS(跨域資源共享)的HTTP請(qǐng)求,它通常在實(shí)際請(qǐng)求(比如GET穗酥、POST护赊、PUT等)之前發(fā)送,以確定實(shí)際請(qǐng)求是否安全砾跃。當(dāng)瀏覽器需要跨域發(fā)送一個(gè)請(qǐng)求時(shí)骏啰,會(huì)先發(fā)送一個(gè)OPTIONS請(qǐng)求,該請(qǐng)求包含了一些頭部信息抽高,如Origin判耕、Access-Control-Request-Method和Access-Control-Request-Headers等。服務(wù)器收到這個(gè)請(qǐng)求后翘骂,會(huì)根據(jù)請(qǐng)求頭中的信息來判斷實(shí)際請(qǐng)求是否安全壁熄。如果服務(wù)器認(rèn)為實(shí)際請(qǐng)求是安全的,就會(huì)返回一個(gè)包含Access-Control-Allow-Origin碳竟、Access-Control-Allow-Methods和Access-Control-Allow-Headers等頭部信息的響應(yīng)草丧,以允許瀏覽器發(fā)送實(shí)際請(qǐng)求。

Preflight請(qǐng)求的目的是確庇ㄎΓ跨域請(qǐng)求的安全性昌执,防止惡意攻擊和信息泄露。在實(shí)際應(yīng)用中,Preflight請(qǐng)求往往是由瀏覽器自動(dòng)發(fā)起的懂拾,開發(fā)者可以通過設(shè)置服務(wù)器的CORS響應(yīng)頭來控制Preflight請(qǐng)求的行為煤禽。

下面這篇文章更加詳細(xì)的舉例介紹了預(yù)檢請(qǐng)求: 淺談瀏覽器中的preflight請(qǐng)求 寫得很好??

總結(jié)一下就是:

  • 預(yù)檢請(qǐng)求是瀏覽器自發(fā)的行為

通常preflight請(qǐng)求不需要用戶自己去管理和干預(yù),它的發(fā)出的響應(yīng)都是由瀏覽器和服務(wù)器自動(dòng)管理的

  • 預(yù)檢請(qǐng)求只會(huì)在存在跨域的時(shí)候觸發(fā)

所以我單獨(dú)訪問子應(yīng)用時(shí)并沒有發(fā)現(xiàn)這種情況岖赋。檬果。。

  • 預(yù)檢請(qǐng)求會(huì)在實(shí)際請(qǐng)求之前發(fā)送

可以看到我的報(bào)錯(cuò)截圖的確是這樣的


存在一個(gè) 204 的 preflight

  • 什么時(shí)候會(huì)觸發(fā)預(yù)檢請(qǐng)求呢唐断?

  • 使用 GET POST HEAD 以外的請(qǐng)求方法時(shí)

  • 請(qǐng)求頭中存在Accept Accept-Language Content-Language Content-Type DPR Downlink Save-Data Viewport-Width Width以外的字段時(shí)

(這也是我的微應(yīng)用工程中的請(qǐng)求觸發(fā)preflight的原因选脊。工程里面有個(gè)攔截器,給每個(gè)請(qǐng)求都加了個(gè)自

定義的請(qǐng)求頭栗涂。知牌。。)

  • Content-Type 中存在 text/plain multipart/form-data application/x-www-form-urlencoded 以外的字段時(shí)
  • XMLHttpRequestUpload對(duì)象注冊(cè)了事件監(jiān)聽器時(shí)
  • 使用了ReadableStream對(duì)象

以上條件只要滿足了一個(gè)斤程,就會(huì)觸發(fā)預(yù)檢請(qǐng)求

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末角寸,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子忿墅,更是在濱河造成了極大的恐慌扁藕,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,997評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件疚脐,死亡現(xiàn)場(chǎng)離奇詭異亿柑,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)棍弄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門望薄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人呼畸,你說我怎么就攤上這事痕支。” “怎么了蛮原?”我有些...
    開封第一講書人閱讀 163,359評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵卧须,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我儒陨,道長(zhǎng)花嘶,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,309評(píng)論 1 292
  • 正文 為了忘掉前任蹦漠,我火速辦了婚禮椭员,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘笛园。我一直安慰自己拆撼,他們只是感情好容劳,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,346評(píng)論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著闸度,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蚜印。 梳的紋絲不亂的頭發(fā)上莺禁,一...
    開封第一講書人閱讀 51,258評(píng)論 1 300
  • 那天,我揣著相機(jī)與錄音窄赋,去河邊找鬼哟冬。 笑死,一個(gè)胖子當(dāng)著我的面吹牛忆绰,可吹牛的內(nèi)容都是我干的浩峡。 我是一名探鬼主播,決...
    沈念sama閱讀 40,122評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼错敢,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼翰灾!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起稚茅,我...
    開封第一講書人閱讀 38,970評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤纸淮,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后亚享,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體咽块,經(jīng)...
    沈念sama閱讀 45,403評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,596評(píng)論 3 334
  • 正文 我和宋清朗相戀三年欺税,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了侈沪。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,769評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡晚凿,死狀恐怖亭罪,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情晃虫,我是刑警寧澤皆撩,帶...
    沈念sama閱讀 35,464評(píng)論 5 344
  • 正文 年R本政府宣布,位于F島的核電站哲银,受9級(jí)特大地震影響扛吞,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜荆责,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,075評(píng)論 3 327
  • 文/蒙蒙 一滥比、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧做院,春花似錦盲泛、人聲如沸濒持。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽柑营。三九已至,卻和暖如春村视,著一層夾襖步出監(jiān)牢的瞬間官套,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評(píng)論 1 269
  • 我被黑心中介騙來泰國打工蚁孔, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留奶赔,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,831評(píng)論 2 370
  • 正文 我出身青樓杠氢,卻偏偏與公主長(zhǎng)得像站刑,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子鼻百,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,678評(píng)論 2 354