jsonp

題目1: 什么是同源策略

同源策略限制從一個(gè)源加載的文檔或腳本如何與來(lái)自另一個(gè)源的資源進(jìn)行交互。這是一個(gè)用于隔離潛在惡意文件的關(guān)鍵的安全機(jī)制放可。目的就是為了保證用戶(hù)信息的安全皿曲,防止惡意的網(wǎng)站竊取數(shù)據(jù)唱逢。
那什么是源呢?如果協(xié)議屋休、域名、端口對(duì)于兩個(gè)頁(yè)面是相同的备韧,則兩個(gè)頁(yè)面具有相同的源劫樟。
舉例來(lái)說(shuō),http://www.example.com/dir/page.html這個(gè)網(wǎng)址织堂,協(xié)議是http://叠艳,域名是www.example.com,端口是80(默認(rèn)端口可以省略)易阳。它的同源情況如下:
http://www.example.com/dir2/other.html:同源
http://example.com/dir/other.html:不同源(域名不同)
http://v2.www.example.com/dir/other.html:不同源(域名不同)
http://www.example.com:81/dir/other.html:不同源(端口不同)

題目2: 什么是跨域附较?跨域有幾種實(shí)現(xiàn)形式

當(dāng) Web 資源請(qǐng)求由其它域名或端口(不同源)提供的資源時(shí),就發(fā)生了跨域請(qǐng)求潦俺【芸危跨域有幾種實(shí)現(xiàn)形式

1.JSONP
例如我要從域A的頁(yè)面pageA加載域B的數(shù)據(jù),那么在域B的頁(yè)面pageB中我以JavaScript的形式聲明pageA需要的數(shù)據(jù)事示,然后在 pageA中用script標(biāo)簽把pageB加載進(jìn)來(lái)早像,那么pageB中的腳本就會(huì)得以執(zhí)行。

function getData(data){
    //這里是對(duì)獲取的數(shù)據(jù)的相關(guān)操作
    console.log(data);
    //數(shù)據(jù)獲取到后移除創(chuàng)建的script標(biāo)簽
    document.body.removeChild(originData);
}
var originData = document.createElement('script');
originData.src = 'http://www.jesse.com/data.js';
originData.setAttribute("type", "text/javascript");
document.body.appendChild(originData);

2.CORS
跨源資源共享(CORS)定義一種跨域訪問(wèn)的機(jī)制肖爵,可以讓AJAX實(shí)現(xiàn)跨域訪問(wèn)卢鹦。CORS允許一個(gè)域上的網(wǎng)絡(luò)應(yīng)用向另一個(gè)域提交跨域AJAX請(qǐng)求。實(shí)現(xiàn)此功能非常簡(jiǎn)單劝堪,只需由服務(wù)器發(fā)送一個(gè)響應(yīng)標(biāo)頭即可冀自。它是通過(guò)客戶(hù)端+服務(wù)端協(xié)作聲明的方式來(lái)確保請(qǐng)求安全的。服務(wù)端會(huì)在HTTP請(qǐng)求頭中增加一系列HTTP請(qǐng)求參數(shù)(例如Access-Control-Allow-Origin等)秒啦,來(lái)限制哪些域的請(qǐng)求和哪些請(qǐng)求類(lèi)型可以接受熬粗,而客戶(hù)端在發(fā)起請(qǐng)求時(shí)必須聲明自己的源(Orgin),否則服務(wù)器將不予處理帝蒿,如果客戶(hù)端不作聲明荐糜,請(qǐng)求甚至?xí)粸g覽器直接攔截都到不了服務(wù)端。服務(wù)端收到HTTP請(qǐng)求后會(huì)進(jìn)行域的比較葛超,只有同域的請(qǐng)求才會(huì)處理暴氏。
3.降域
對(duì)于主域相同而子域不同的例子,可以通過(guò)設(shè)置document.domain的辦法來(lái)解決绣张。 具體的做法是可以在http://www.a.com/a.htmlhttp://script.a.com/b.html兩個(gè)文件中分別加上 document.domain = "a.com"答渔;然后通過(guò)a.html文件中創(chuàng)建一個(gè)iframe,去控制iframe的contentDocument侥涵,這樣兩個(gè)js文件之間就可以 “交互”了沼撕。
4.postMessage
window.postMessage(message,targetOrigin) 方法是html5新引進(jìn)的特性宋雏,可以使用它來(lái)向其它的window對(duì)象發(fā)送消息,無(wú)論這個(gè)window對(duì)象是屬于同源或不同源务豺,目前IE8+磨总、FireFox、Chrome笼沥、Opera等瀏覽器都已經(jīng)支持window.postMessage方法蚪燕。

題目3: JSONP 的原理是什么

就是利用<script>標(biāo)簽沒(méi)有跨域限制的“漏洞”來(lái)達(dá)到與第三方通訊的目的。當(dāng)需要通訊時(shí)奔浅,本站腳本創(chuàng)建一個(gè)<script>元素馆纳,地址指向第三方的API網(wǎng)址,形如:
<script src="http://www.example.net/api?param1=1&param2=2"></script>
并提供一個(gè)回調(diào)函數(shù)來(lái)接收數(shù)據(jù)(函數(shù)名可約定汹桦,或通過(guò)地址參數(shù)傳遞)鲁驶。
第三方產(chǎn)生的響應(yīng)為json數(shù)據(jù)的包裝(故稱(chēng)之為jsonp,即json padding)舞骆,形如:
callback({"name":"hax","gender":"Male"})
這樣瀏覽器會(huì)調(diào)用callback函數(shù)钥弯,并傳遞解析后json對(duì)象作為參數(shù)。本站腳本可在callback函數(shù)里處理所傳入的數(shù)據(jù)葛作。

題目4: CORS是什么

1寿羞、CORS是一個(gè)W3C標(biāo)準(zhǔn),全稱(chēng)是"跨域資源共享"(Cross-origin resource sharing)赂蠢。它允許瀏覽器向跨源服務(wù)器绪穆,發(fā)出XMLHttpRequest請(qǐng)求,從而克服了AJAX只能同源使用的限制虱岂。
2玖院、瀏覽器將CORS請(qǐng)求分成兩類(lèi):簡(jiǎn)單請(qǐng)求(simple request)和非簡(jiǎn)單請(qǐng)求(not-so-simple request)。
(1)對(duì)于簡(jiǎn)單請(qǐng)求第岖,瀏覽器直接發(fā)出CORS請(qǐng)求难菌。具體來(lái)說(shuō),就是在頭信息之中蔑滓,增加一個(gè)Origin字段郊酒。
(2)非簡(jiǎn)單請(qǐng)求是對(duì)服務(wù)器有特殊要求的請(qǐng)求,比如請(qǐng)求方法是PUT或DELETE键袱,或者Content-Type字段的類(lèi)型是application/json燎窘。非簡(jiǎn)單請(qǐng)求的CORS請(qǐng)求,會(huì)在正式通信之前蹄咖,增加一次HTTP查詢(xún)請(qǐng)求褐健,稱(chēng)為"預(yù)檢"請(qǐng)求(preflight),"預(yù)檢"請(qǐng)求用的請(qǐng)求方法是OPTIONS澜汤。瀏覽器先詢(xún)問(wèn)服務(wù)器蚜迅,當(dāng)前網(wǎng)頁(yè)所在的域名是否在服務(wù)器的許可名單之中舵匾,以及可以使用哪些HTTP動(dòng)詞和頭信息字段。只有得到肯定答復(fù)谁不,瀏覽器才會(huì)發(fā)出正式的XMLHttpRequest請(qǐng)求坐梯,否則就報(bào)錯(cuò)。

題目5:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末刹帕,一起剝皮案震驚了整個(gè)濱河市烛缔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌轩拨,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件院喜,死亡現(xiàn)場(chǎng)離奇詭異亡蓉,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)喷舀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)砍濒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人硫麻,你說(shuō)我怎么就攤上這事爸邢。” “怎么了拿愧?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵杠河,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我浇辜,道長(zhǎng)券敌,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任柳洋,我火速辦了婚禮待诅,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘熊镣。我一直安慰自己卑雁,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布绪囱。 她就那樣靜靜地躺著测蹲,像睡著了一般。 火紅的嫁衣襯著肌膚如雪毕箍。 梳的紋絲不亂的頭發(fā)上弛房,一...
    開(kāi)封第一講書(shū)人閱讀 51,688評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音而柑,去河邊找鬼文捶。 笑死荷逞,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的粹排。 我是一名探鬼主播种远,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼顽耳!你這毒婦竟也來(lái)了坠敷?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤射富,失蹤者是張志新(化名)和其女友劉穎膝迎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體胰耗,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡限次,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了柴灯。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片卖漫。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖赠群,靈堂內(nèi)的尸體忽然破棺而出羊始,到底是詐尸還是另有隱情,我是刑警寧澤查描,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布突委,位于F島的核電站,受9級(jí)特大地震影響叹誉,放射性物質(zhì)發(fā)生泄漏鸯两。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一长豁、第九天 我趴在偏房一處隱蔽的房頂上張望钧唐。 院中可真熱鬧,春花似錦匠襟、人聲如沸钝侠。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)帅韧。三九已至,卻和暖如春啃勉,著一層夾襖步出監(jiān)牢的瞬間忽舟,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留叮阅,地道東北人刁品。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像浩姥,于是被迫代替她去往敵國(guó)和親挑随。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355

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

  • 1.什么是同源策略 1.要了解同源策略拌汇,我們必須先知道源即orgin 以百度頁(yè)面為例,谷歌瀏覽器打開(kāi)控制臺(tái):輸入l...
    GarenWang閱讀 1,454評(píng)論 2 8
  • Section1弊决、為什么要跨域担猛? 自古以來(lái)(1995年起),為了用戶(hù)的信息安全丢氢,瀏覽器就引入了同源策略。那么同源策...
    不去解釋閱讀 553評(píng)論 0 0
  • Section1先改、為什么要跨域疚察? 自古以來(lái)(1995年起),為了用戶(hù)的信息安全仇奶,瀏覽器就引入了同源策略貌嫡。那么同源策...
    qhaobaba閱讀 382評(píng)論 0 0
  • 1.什么是同源策略瀏覽器出于安全方面的考慮,只允許與本域下的接口交互该溯。不同源的客戶(hù)端腳本在沒(méi)有明確授權(quán)的情況下岛抄,不...
    24_Magic閱讀 497評(píng)論 0 0
  • 什么是同源策略 同源政策(same-origin policy)是指同域名(或ip),同端口,同協(xié)議視為同一個(gè)域狈茉,...
    小囧兔閱讀 513評(píng)論 0 1