同源策略、跨域赃份、jsonp

什么是同源策略

同源策略是瀏覽器最基本的功能寂拆,同源指得是相同的域名、協(xié)議和端口號抓韩,不同的源的客戶端腳本在沒有明確授權(quán)的情況下纠永,無法相互讀取對方的資源稱之為同源策略。


什么是跨域谒拴?跨域有幾種實現(xiàn)形式

跨域就是突破同源策略的限制尝江,使一個域名的網(wǎng)頁可以請求另一個域名的資源。實現(xiàn)方式:

  1. 降域 document.domain
    前提條件:這兩個域名必須屬于同一個基礎(chǔ)域名!而且所用的協(xié)議英上,端口都要一致炭序,否則無法利用document.domain進行跨域
    同時為兩個域設(shè)置document.domain= xxx.com(少用、慎用善延,有安全問題)

  2. jsonp :
    利用script的src標簽的跨域?qū)傩陨偬瑐鬟f一個callback參數(shù)給服務(wù)端來獲取其他源的數(shù)據(jù)

  3. cors 跨域資源共享:
    在HTTP請求里添加特殊的頭,允許服務(wù)器指定特定的域名可以跨域訪問易遣。

  4. 利用hash :
    通過給b頁面hash值做為參數(shù)傳遞數(shù)據(jù)彼妻,在a頁面添加隱藏的iframe(b頁面),添加定時器判斷hash值有無發(fā)生變化豆茫,有變化則獲取hash值侨歉,缺點是數(shù)據(jù)量較小,而且此方法比較饒揩魂,不推薦使用幽邓。

  5. 利用window.name
    此方法比較饒,需要跳轉(zhuǎn)兩次頁面火脉。參考博客window.name實現(xiàn)的跨域數(shù)據(jù)傳輸

  6. HTML5 postMssage: html5引入的API,可以實現(xiàn)跨文檔牵舵、多窗口、跨域消息的傳遞倦挂。
    可參考博客html5 postMessage解決跨域畸颅、跨窗口消息傳遞


jsonp的原理是什么

jsonp即json with padding,主要是利用script的src標簽的跨域?qū)傩裕瑐鬟f一個callback參數(shù)給服務(wù)端方援,讓服務(wù)器端返回可執(zhí)行的Javascript函數(shù)没炒,參數(shù)為要回發(fā)的數(shù)據(jù)。有兩個問題(缺點):

  1. 可能會被注入callback = alert(1); 解決辦法為設(shè)置字符串過濾出其中的左右括號犯戏。如:callback = callback.replace(/\(/g,"")

  2. 只能用get傳輸數(shù)據(jù)送火,無法使用post方式進行傳輸拳话。

  3. 需要驗證身份(token),解決辦法是為callback參數(shù)設(shè)置兩個頁面共有cookie作為參數(shù)

JSON及JSONP的區(qū)別主要參考這篇博客


CORS是什么

CORS是一個W3C標準种吸,全稱是"跨域資源共享"(Cross-origin resource sharing)弃衍,避開了瀏覽器的同源策略,通過在http請求里添加特殊的頭骨稿,允許服務(wù)器指定哪些跨域請求是允許的笨鸡,與jsonp使用目的相同,但是要比jsonp更強大坦冠,缺點是不兼容老的IE瀏覽器形耗。如:
header("Access-Control-Allow-Origin:http://jiuyi.com") //指定http://jiuyi.com 這個域可以請求它;
header("Access-Control-Allow-Origin:*") //指定所有域都可以請求它辙浑;


練習題

  1. 演示同源策略激涤,如圖
因同源策略限制無法訪問b.com文件

  1. 使用降域演示跨子域,如圖
跨子域

  1. 使用jsonp跨域,如圖
使用jsonp跨域

  1. 使用cors跨域判呕,如圖
cors跨域

  • 本博客版權(quán)歸羞澀的澀和饑人谷所有倦踢,轉(zhuǎn)載請注明出處
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市侠草,隨后出現(xiàn)的幾起案子辱挥,更是在濱河造成了極大的恐慌,老刑警劉巖边涕,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件晤碘,死亡現(xiàn)場離奇詭異,居然都是意外死亡功蜓,警方通過查閱死者的電腦和手機园爷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來式撼,“玉大人童社,你說我怎么就攤上這事≈。” “怎么了扰楼?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長美浦。 經(jīng)常有香客問我弦赖,道長,這世上最難降的妖魔是什么抵代? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任腾节,我火速辦了婚禮忘嫉,結(jié)果婚禮上荤牍,老公的妹妹穿的比我還像新娘案腺。我一直安慰自己,他們只是感情好康吵,可當我...
    茶點故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布劈榨。 她就那樣靜靜地躺著,像睡著了一般晦嵌。 火紅的嫁衣襯著肌膚如雪同辣。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天惭载,我揣著相機與錄音旱函,去河邊找鬼。 笑死描滔,一個胖子當著我的面吹牛棒妨,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播含长,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼券腔,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了拘泞?” 一聲冷哼從身側(cè)響起纷纫,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎陪腌,沒想到半個月后辱魁,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡偷厦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年商叹,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片只泼。...
    茶點故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡剖笙,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出请唱,到底是詐尸還是另有隱情弥咪,我是刑警寧澤,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布十绑,位于F島的核電站聚至,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏本橙。R本人自食惡果不足惜扳躬,卻給世界環(huán)境...
    茶點故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧贷币,春花似錦击胜、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至促脉,卻和暖如春辰斋,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背瘸味。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工宫仗, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人旁仿。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓锰什,卻偏偏與公主長得像,于是被迫代替她去往敵國和親丁逝。 傳聞我的和親對象是個殘疾皇子汁胆,可洞房花燭夜當晚...
    茶點故事閱讀 45,435評論 2 359

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