理解 CORS 跨域資源共享

同源策略

瀏覽器的同源策略(same-origin policy)禁止網(wǎng)頁內(nèi)的腳本獲取他其他域的資源诗箍。這是瀏覽器最基礎(chǔ)的安全策略之一。

一個(gè)域的描述由三個(gè)部分組成:Schema (http/https)挽唉,Host 以及 Port滤祖。如果兩個(gè) url 的這三個(gè)部分都相同,則我們認(rèn)為是同一個(gè)域瓶籽。否則為不同域匠童。

跨域訪問

同源策略的本意是為了網(wǎng)絡(luò)安全。但特別是現(xiàn)在塑顺,很多業(yè)務(wù)場(chǎng)景是需要跨域訪問的俏让。比如我希望在自己的網(wǎng)站上,展示海外的天氣信息茬暇,而這個(gè)天氣信息可能就是從我的網(wǎng)頁直接 JS 請(qǐng)求海外的一個(gè)天氣信息服務(wù)來獲取的首昔。這個(gè)時(shí)候,我們就需要用到 CORS (Cross-Origin Resource Sharing (CORS) 即跨域資源共享勒奇。

CORS 工作原理
  1. 瀏覽器加載網(wǎng)頁 http://A.com劈彪,基于該網(wǎng)頁的 JS 定義痘括,向 http://B.com/info 發(fā)起 http 請(qǐng)求獲取一些資源信息。發(fā)送請(qǐng)求時(shí),瀏覽器會(huì)在請(qǐng)求頭里面加一個(gè) Origin頭信息懂算,其中包含 A 的域信息犯犁。

Origin: <scheme> "://" <hostname> [ ":" <port> ]

  1. B 服務(wù)在收到 A 的請(qǐng)求后驾胆,會(huì)檢查 Origin 頭里的信息,同時(shí)在返回報(bào)文頭里面廉價(jià)一個(gè) Access-Control-Allow-Origin 頭信息來聲明允許訪問返回資源信息的域抗愁。("*" 則代表所有域都可以訪問)

Access-Control-Allow-Origin: *

  1. 瀏覽器收到 B 的返回報(bào)文(即資源)撮珠。檢查報(bào)文頭 Access-Control-Allow-Origin 內(nèi)的域許可信息——允許 A 訪問該資源。此時(shí),瀏覽器會(huì)正常允許網(wǎng)頁 A 讀取此時(shí)獲取到的 B 資源。

參考

  1. Web.dev: Cross Origin Resource Sharing
  2. Mozilla.org: Same-origin policy
  3. Mozilla.org: Origin
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末购披,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子歌殃,更是在濱河造成了極大的恐慌,老刑警劉巖波材,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異玖绿,居然都是意外死亡俘种,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門垫释,熙熙樓的掌柜王于貴愁眉苦臉地迎上來预伺,“玉大人骆撇,你說我怎么就攤上這事神郊∮咳椋” “怎么了爷怀?”我有些...
    開封第一講書人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵逗宜,是天一觀的道長(zhǎng)纺讲。 經(jīng)常有香客問我熬甚,道長(zhǎng),這世上最難降的妖魔是什么智厌? 我笑而不...
    開封第一講書人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任吝沫,我火速辦了婚禮,結(jié)果婚禮上恭朗,老公的妹妹穿的比我還像新娘而芥。我一直安慰自己秘案,他們只是感情好寒屯,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開白布荐捻。 她就那樣靜靜地躺著,像睡著了一般寡夹。 火紅的嫁衣襯著肌膚如雪处面。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,443評(píng)論 1 302
  • 那天菩掏,我揣著相機(jī)與錄音魂角,去河邊找鬼。 笑死智绸,一個(gè)胖子當(dāng)著我的面吹牛野揪,可吹牛的內(nèi)容都是我干的访忿。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼斯稳,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼海铆!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起挣惰,我...
    開封第一講書人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤卧斟,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后憎茂,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體珍语,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年竖幔,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了板乙。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡拳氢,死狀恐怖募逞,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情饿幅,我是刑警寧澤凡辱,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站栗恩,受9級(jí)特大地震影響透乾,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜磕秤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一乳乌、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧市咆,春花似錦汉操、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至搜变,卻和暖如春采缚,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背挠他。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工扳抽, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓贸呢,卻偏偏與公主長(zhǎng)得像镰烧,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子楞陷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 最近在琢磨前后端分離怔鳖,難免會(huì)碰到跨域問題。 首先弄清楚猜谚,跨域指的是瀏覽器不能執(zhí)行其他網(wǎng)站的腳本败砂。它是由瀏覽器的同源...
    舒健Wilson閱讀 2,938評(píng)論 0 2
  • 歡迎關(guān)注微信公眾號(hào):全棧工廠 本文主要參考跨域資源共享 CORS 詳解[http://www.ruanyifeng...
    liqingbiubiu閱讀 1,844評(píng)論 0 3
  • 一赌渣、背景 提起瀏覽器的同源策略魏铅,大家都很熟悉。不同域的客戶端腳本不能讀寫對(duì)方的資源坚芜。但是實(shí)踐中有一些場(chǎng)景需要跨域的...
    walljay閱讀 613評(píng)論 0 0
  • 同源策略 在瀏覽器中览芳,如果我們直接使用 AJAX 發(fā)送一個(gè)對(duì)其他網(wǎng)站的請(qǐng)求(跨域請(qǐng)求),默認(rèn)情況下是無法獲取到響應(yīng)...
    Whyn閱讀 922評(píng)論 0 0
  • 我是黑夜里大雨紛飛的人啊 1 “又到一年六月鸿竖,有人笑有人哭沧竟,有人歡樂有人憂愁,有人驚喜有人失落缚忧,有的覺得收獲滿滿有...
    陌忘宇閱讀 8,536評(píng)論 28 53