Web跨域問題總結(jié)

昨天測試一個網(wǎng)頁聯(lián)調(diào)問題時發(fā)送請求總是發(fā)送不成功故觅,因為時IE8環(huán)境提示很有限桂肌,后來無奈開啟IE調(diào)試模式發(fā)現(xiàn)報錯信心時"no Transtport",結(jié)合實際環(huán)境想到原來時跨域問題造成的施禾。為此想總結(jié)一下Web跨域問題旗扑。

一张漂、跨域問題的由來
為了防止某些文檔或腳本加載別的域下的未知內(nèi)容造成泄露隱私肢预,破壞系統(tǒng)等安全行為,1995年微姊, Netscape 公司在瀏覽器中引入同源策略/SOP(Same origin policy)酸茴,它是瀏覽器最核心也最基本的安全功能,對Web訪問做了兩種限制:
1兢交、不能通過ajax的方法或其他腳本中的請求去訪問不同源中的文檔薪捍。
2、瀏覽器中不同域的框架之間是不能進(jìn)行js的交互操作的配喳。
引入SOP的初衷是為了Web安全飘诗,但實際使用中,正常合理的跨域請求也會遭到限制界逛,由此產(chǎn)生了跨域問題。

二纺座、怎么算跨域(同源的定義)
兩個URL的協(xié)議息拜,域名(主機名、IP)和端口都相同則認(rèn)為是同源,否則有任一個不同則認(rèn)為跨域少欺。

Paste_Image.png

IE有例外:授信范圍(Trust Zones):兩個相互之間高度互信的域名喳瓣,如公司域名(corporate domains),不遵守同源策略的限制赞别。IE未將端口號加入到同源策略的組成部分之中畏陕,因此 http://company.com:81/index.htmlhttp://company.com/index.html 屬于同源并且不受任何限制。

三仿滔、常見跨域問題解決方
要解決瀏覽器跨域請求問題惠毁,必須要服務(wù)器端支持,如果服務(wù)器本身限制不允許跨域訪問崎页,則無法實現(xiàn)鞠绰。
1、JSONP

Paste_Image.png

同源策略下飒焦,某個服務(wù)器是無法獲取到服務(wù)器以外的數(shù)據(jù),但是html里面的img,iframe和script等標(biāo)簽是個例外,這些標(biāo)簽可以通過src屬性請求到其他服務(wù)器上的數(shù)據(jù)眷柔。
JSONP就是通過script節(jié)點src調(diào)用跨域的請求糟趾。當(dāng)我們向服務(wù)器提交一個JSONP的請求時,我們給服務(wù)傳了一個特殊的參數(shù),告訴服務(wù)端要對結(jié)果特殊處理一下。這樣服務(wù)端返回的數(shù)據(jù)就會進(jìn)行一點包裝休雌,客戶端就可以處理灶壶。如下圖:

Paste_Image.png

特點:JSONP跨域方式只需要服務(wù)端支持即可,簡單方便挑辆,但它只支持GET的方式提交例朱,不支持其他Post的提交,Get方式對請求的參數(shù)長度有限制鱼蝉,在有些情況下可能不滿足要求洒嗤。

2、CORS

Paste_Image.png

CORS(跨域資源共享魁亦,Cross-Origin Resource Sharing)是通過客戶端+服務(wù)端協(xié)作聲明的方式來確保請求安全的渔隶。服務(wù)端會在HTTP請求頭中增加一系列HTTP請求參數(shù)(例如Access-Control-Allow-Origin等),來限制哪些域的請求和哪些請求類型可以接受洁奈,而客戶端在發(fā)起請求時必須聲明自己的源(Orgin)间唉,否則服務(wù)器將不予處理,如果客戶端不作聲明利术,請求甚至?xí)粸g覽器直接攔截都到不了服務(wù)端呈野。服務(wù)端收到HTTP請求后會進(jìn)行域的比較,只有同域的請求才會處理印叁,并在響應(yīng)頭中增加允許域信息被冒,瀏覽器檢查響應(yīng)頭中允許域是否正常军掂,若不正常就限制輸出。
特點:需要瀏覽器客戶端昨悼、服務(wù)端同時支持蝗锥,有兼容性問題(IE8就通過XDR只實現(xiàn)了CORS的部分規(guī)范,只支持GET/POST形式的請求率触。另外只支持 http 和 https )终议。瀏覽器支持情況如下圖:

Paste_Image.png

注意,跨域請求始終是網(wǎng)頁安全中一個比較頭疼的問題葱蝗,CORS提供了一種跨域請求方案穴张,但沒有為安全訪問提供足夠的保障機制,如果你需要信息的絕對安全垒玲,不要依賴CORS當(dāng)中的權(quán)限制度陆馁,應(yīng)當(dāng)使用更多其它的措施來保障,比如OAuth2合愈。

3叮贩、其它不常用方式
WebSocket、ifream佛析、服務(wù)器代理益老、flash socket。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末寸莫,一起剝皮案震驚了整個濱河市捺萌,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌膘茎,老刑警劉巖桃纯,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異披坏,居然都是意外死亡态坦,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進(jìn)店門棒拂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來伞梯,“玉大人,你說我怎么就攤上這事帚屉∶战耄” “怎么了?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵攻旦,是天一觀的道長喻旷。 經(jīng)常有香客問我,道長牢屋,這世上最難降的妖魔是什么掰邢? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任牺陶,我火速辦了婚禮,結(jié)果婚禮上辣之,老公的妹妹穿的比我還像新娘。我一直安慰自己皱炉,他們只是感情好怀估,可當(dāng)我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著合搅,像睡著了一般多搀。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上灾部,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天康铭,我揣著相機與錄音,去河邊找鬼赌髓。 笑死从藤,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的锁蠕。 我是一名探鬼主播夷野,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼荣倾!你這毒婦竟也來了悯搔?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤舌仍,失蹤者是張志新(化名)和其女友劉穎妒貌,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體铸豁,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡灌曙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了推姻。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片平匈。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖藏古,靈堂內(nèi)的尸體忽然破棺而出增炭,到底是詐尸還是另有隱情,我是刑警寧澤拧晕,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布隙姿,位于F島的核電站,受9級特大地震影響厂捞,放射性物質(zhì)發(fā)生泄漏输玷。R本人自食惡果不足惜队丝,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望欲鹏。 院中可真熱鬧机久,春花似錦、人聲如沸赔嚎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽尤误。三九已至侠畔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間损晤,已是汗流浹背软棺。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留尤勋,地道東北人喘落。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像斥黑,于是被迫代替她去往敵國和親揖盘。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,724評論 2 351

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

  • 歡迎關(guān)注微信公眾號:全棧工廠 本文主要參考跨域資源共享 CORS 詳解[http://www.ruanyifeng...
    liqingbiubiu閱讀 1,830評論 0 3
  • 前言:對于跨域請求锌奴,很早之前就有去了解過兽狭,但因為一直關(guān)注的都是服務(wù)器后端開發(fā),故也就僅僅停留在概念的理解上而沒有機...
    ken_ljq閱讀 89,743評論 6 128
  • 瀏覽器在請求不同域的資源時,會因為同源策略的影響請求不成功茴恰,這就是通常被提到的“跨域問題”颠焦。作為前端開發(fā),解決跨域...
    SCQ000閱讀 2,542評論 1 52
  • 一往枣、瀏覽器的同源策略 1.什么是同源伐庭? 所謂“同源”指的是”三個相同“。相同的域名分冈、端口和協(xié)議圾另,這三個相同的話就視...
    徐國軍_plus閱讀 838評論 1 3
  • 前言 對于Bug相信對于所有的開發(fā)者而言都是噩夢,沒有一個app是完美的雕沉,尤其是android開發(fā)需要適配的版本太...
    Smile__EveryDay閱讀 21,275評論 3 18