同源策略、跨域苔咪、jsonp

1.同源策略

是指瀏覽器普遍默認(rèn)的一種安全策略锰悼;

例如:
一個惡意網(wǎng)站的頁面通過iframe嵌入了銀行的登錄頁面(二者不同源),如果沒有同源限制悼泌,惡意網(wǎng)頁上的javascript腳本就可以在用戶登錄銀行的時候獲取用戶名和密碼松捉。

  • 同源:
    即是指URL具有相同的協(xié)議、域名馆里、端口隘世;可以理解為當(dāng)前域名下的腳本,只能讀寫當(dāng)前域名下的數(shù)據(jù)資源鸠踪,而無法獲取其他資源丙者;
2.跨域以及跨域有幾種實(shí)現(xiàn)形式

通過一些方法,突破同源策略的限制
實(shí)現(xiàn)方式包括

  • 降域
    (當(dāng)域名有相同后綴時可使用营密,使用不多械媒,容易產(chǎn)生安全問題,一個子頁面收到攻擊,所有數(shù)據(jù)都存在泄漏的風(fēng)險)
    在當(dāng)前域名及調(diào)用數(shù)據(jù)內(nèi)部都添加
document.domain=XXXX...
XXX只能設(shè)置為當(dāng)前域名的上一級~上N級域名纷捞、
可以繼續(xù)向下修改痢虹,不能向上進(jìn)行修改
  • JSONP
  • CORS
3.JSONP的原理

在當(dāng)前域創(chuàng)建一個函數(shù)XXX,創(chuàng)建一個動態(tài)script標(biāo)簽主儡,并將想要調(diào)用數(shù)據(jù)的域名設(shè)置為script的src值奖唯,且需要添加一個參數(shù)值callback=xxx,與之前創(chuàng)建的函數(shù)糜值,聲明一致丰捷。這樣獲取到了需要的數(shù)據(jù),并且在當(dāng)前域執(zhí)行xxx(data)寂汇;

<script>
window.newfun=function(data ){   //當(dāng)前域聲明一個函數(shù)
 alert()
}
<script>
 var script=document.createElement('script');  //創(chuàng)建一個動態(tài)script標(biāo)簽
 script.src='//abc.com/ac.js?callback=newfun' //向服務(wù)器請求callback數(shù)據(jù)
document.body.appendChild('script'); //添加到頁面
<script>
</script>
//后臺服務(wù)器寫法
var callback=this.query.newfun;
this.body=callback+'(data)';
  • 缺點(diǎn):
    如果a.com可以訪問b.com病往,那么完全可以讓c.com也訪問b.com,解決方法有要么用正則過濾掉不應(yīng)該出現(xiàn)的字符串骄瓣,要么約定好一套數(shù)據(jù)停巷,比如cookies來互相匹配
    不能用post只能get

參考資料

4.CORS

Cross Origin Rescource Sharing 跨域資源共享
在調(diào)用數(shù)據(jù)文檔內(nèi)加入響應(yīng)頭,在當(dāng)前域名直接用ajax調(diào)用即可

this.set('Access-Control-Allow-Origin','當(dāng)前域名')

缺點(diǎn)是IE8,9兼容存在問題

更多其他跨域解決方法

本地模擬同源策略

首先找到系統(tǒng)的hosts文件(windows系統(tǒng)的路徑 C:\Windows\System32\drivers\etc)默認(rèn)情況下累贤,只有l(wèi)ocalhost指向本地IP 127.0.0.1叠穆,在hosts文件中我們可以為其添加多個域名


模擬同源策略
  • JSONP
   window.newfun=function(data){
      alert(data);}
    var script=document.createElement('script');
    script.type='text/javascript';
    script.src='//b.com/task31/data.php?callback=newfun';
    document.body.appendChild(script);
    </script>
//后臺
newfun('我是數(shù)據(jù)');
JSONP
  • CORS
    $.ajax({
      url:'//b.com/task31/data.php',
      type:'get',
      datatype:'json',
      // jsonp:'callback',
      success:function(data){
        console.log(data);
      },
      error:function(){
        console.log('there is problem');
      }
    })
//后臺
<?php
    header('Access-Control-Allow-Origin:http://a.com');
    $data='i am data';
    echo json_encode($data);
?>
CORS
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市臼膏,隨后出現(xiàn)的幾起案子硼被,更是在濱河造成了極大的恐慌,老刑警劉巖渗磅,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嚷硫,死亡現(xiàn)場離奇詭異,居然都是意外死亡始鱼,警方通過查閱死者的電腦和手機(jī)仔掸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來医清,“玉大人起暮,你說我怎么就攤上這事』崂樱” “怎么了负懦?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長柏腻。 經(jīng)常有香客問我纸厉,道長,這世上最難降的妖魔是什么五嫂? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任颗品,我火速辦了婚禮肯尺,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘躯枢。我一直安慰自己则吟,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布锄蹂。 她就那樣靜靜地躺著逾滥,像睡著了一般。 火紅的嫁衣襯著肌膚如雪败匹。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天讥巡,我揣著相機(jī)與錄音掀亩,去河邊找鬼。 笑死欢顷,一個胖子當(dāng)著我的面吹牛槽棍,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播抬驴,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼炼七,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了布持?” 一聲冷哼從身側(cè)響起豌拙,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎题暖,沒想到半個月后按傅,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡胧卤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年唯绍,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片枝誊。...
    茶點(diǎn)故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡况芒,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出叶撒,到底是詐尸還是另有隱情绝骚,我是刑警寧澤,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布痊乾,位于F島的核電站皮壁,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏哪审。R本人自食惡果不足惜蛾魄,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧滴须,春花似錦舌狗、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至魔市,卻和暖如春主届,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背待德。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工君丁, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人将宪。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓绘闷,卻偏偏與公主長得像,于是被迫代替她去往敵國和親较坛。 傳聞我的和親對象是個殘疾皇子印蔗,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評論 2 345

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