JSONP_跨域

什么是同源策略

同源策略是瀏覽器的安全限制鲸拥,即非同域的腳本無(wú)法互相獲取資源拐格。這是為了保護(hù)用戶隱私,防止惡意行為刑赶。
兩個(gè)URL同協(xié)議捏浊、同域名、同端口撞叨,則表示他們同源呛伴。
在非同源情況下:
Cookie,localStrage,IndexedDb
DOM 無(wú)法獲取
Ajax請(qǐng)求無(wú)法發(fā)送

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

跨域:繞過(guò)瀏覽器的同源限制訪問(wèn)其他域名的資源
跨域?qū)崿F(xiàn)形式:
JSONP
CORS
降域
postMassage

JSONP 的原理是什么

利用script標(biāo)簽可以跨域接受響應(yīng)的原理谒所。
需要服務(wù)端支持热康,服務(wù)端將數(shù)據(jù)用回調(diào)函數(shù)包裹起來(lái),發(fā)送到頁(yè)面作為js代碼執(zhí)行函數(shù)劣领。
步驟:

  1. 定義數(shù)據(jù)處理函數(shù)_fun
  2. 創(chuàng)建script標(biāo)簽姐军,src的地址執(zhí)行后端接口,最后加個(gè)參數(shù)callback=_fun
  3. 服務(wù)端在收到請(qǐng)求后尖淘,解析參數(shù)奕锌,計(jì)算返還數(shù)據(jù),輸出 fun(data) 字符串村生。
  4. fun(data)會(huì)放到script標(biāo)簽做為js執(zhí)行惊暴。此時(shí)會(huì)調(diào)用fun函數(shù),將data做為參數(shù)趁桃。

缺點(diǎn):
只能發(fā)起GET請(qǐng)求
比起AJAX辽话,支持不夠全面肄鸽。無(wú)法通過(guò)注冊(cè)一些事件監(jiān)聽(tīng)函數(shù)進(jìn)行其他處理。
需確定訪問(wèn)的異域服務(wù)器不會(huì)返回惡意的代碼
需注意抵御CSRF漏洞:網(wǎng)站通過(guò)JSONP跨域傳遞用戶認(rèn)證后的敏感信息時(shí)油啤,攻擊者可以構(gòu)造惡意的JSONP調(diào)用頁(yè)面典徘,誘導(dǎo)被攻擊者訪問(wèn),以達(dá)到截取用戶敏感信息的目的益咬。

CORS是什么

在CORS中的請(qǐng)求分為兩種:簡(jiǎn)單請(qǐng)求和復(fù)雜請(qǐng)求
** 簡(jiǎn)單請(qǐng)求: **

  1. 只使用GET逮诲,HEAD或者POST。如果使用POST來(lái)發(fā)送數(shù)據(jù)到服務(wù)器幽告,那么使用HTTP POST請(qǐng)求發(fā)送到服務(wù)器的數(shù)據(jù)的Content-Type為以下幾種之一:application/x-www-form-urlencoded梅鹦,multipart/form-data以及text/plain。
  2. 不使用HTTP請(qǐng)求發(fā)送定制請(qǐng)求頭(例如X-Modified等)
    在簡(jiǎn)單請(qǐng)求下冗锁,我們只需設(shè)置Access-Control-Allow-Origin頭部即可帘瞭。

**復(fù)雜請(qǐng)求 **

  1. 使用了除GET,HEAD和POST以外的方法蒿讥。如果使用POST方法發(fā)送請(qǐng)求數(shù)據(jù)時(shí)的Content-Type不是application/x-www-form-urlencoded,multipart/form-data或者text/plaint抛腕。例如芋绸,如果POST請(qǐng)求向服務(wù)器使用application/xml或者text/xml向服務(wù)器發(fā)送請(qǐng)求,那么這個(gè)請(qǐng)求就是preflighted的担敌。
  2. 設(shè)置了定制請(qǐng)求頭的請(qǐng)求(例如摔敛,請(qǐng)求使用了例如X-PINGOTHER這樣的請(qǐng)求頭)
    這類(lèi)請(qǐng)求在發(fā)送正式請(qǐng)求之前會(huì)發(fā)送一個(gè)Preflighted(預(yù)請(qǐng)求),Preflighted請(qǐng)求首先通過(guò)HTTP OPTIONS方法請(qǐng)求其他域上的資源全封,以確定發(fā)送實(shí)際的請(qǐng)求是否安全马昙。這樣做,是因?yàn)榭缯菊?qǐng)求可能會(huì)對(duì)目的站點(diǎn)的數(shù)據(jù)造成破壞刹悴。我們第二次發(fā)的請(qǐng)求是一個(gè)復(fù)雜請(qǐng)求行楞,服務(wù)端沒(méi)有響應(yīng)options的方法,導(dǎo)致預(yù)請(qǐng)求失敗土匀,之后的請(qǐng)求也就終止了子房。

參考:http://www.qdfuns.com/notes/16837/7f24c8d1eb39750897060f0b12fa3855.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市就轧,隨后出現(xiàn)的幾起案子证杭,更是在濱河造成了極大的恐慌,老刑警劉巖妒御,帶你破解...
    沈念sama閱讀 211,265評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件解愤,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡乎莉,警方通過(guò)查閱死者的電腦和手機(jī)送讲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)奸笤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人李茫,你說(shuō)我怎么就攤上這事揭保。” “怎么了魄宏?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,852評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵秸侣,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我宠互,道長(zhǎng)味榛,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,408評(píng)論 1 283
  • 正文 為了忘掉前任予跌,我火速辦了婚禮搏色,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘券册。我一直安慰自己频轿,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布烁焙。 她就那樣靜靜地躺著航邢,像睡著了一般。 火紅的嫁衣襯著肌膚如雪骄蝇。 梳的紋絲不亂的頭發(fā)上膳殷,一...
    開(kāi)封第一講書(shū)人閱讀 49,772評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音九火,去河邊找鬼赚窃。 笑死,一個(gè)胖子當(dāng)著我的面吹牛岔激,可吹牛的內(nèi)容都是我干的勒极。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼虑鼎,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼河质!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起震叙,我...
    開(kāi)封第一講書(shū)人閱讀 37,688評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤掀鹅,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后媒楼,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體乐尊,經(jīng)...
    沈念sama閱讀 44,130評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評(píng)論 2 325
  • 正文 我和宋清朗相戀三年划址,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了扔嵌。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片限府。...
    茶點(diǎn)故事閱讀 38,617評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖痢缎,靈堂內(nèi)的尸體忽然破棺而出胁勺,到底是詐尸還是另有隱情,我是刑警寧澤独旷,帶...
    沈念sama閱讀 34,276評(píng)論 4 329
  • 正文 年R本政府宣布署穗,位于F島的核電站,受9級(jí)特大地震影響嵌洼,放射性物質(zhì)發(fā)生泄漏案疲。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評(píng)論 3 312
  • 文/蒙蒙 一麻养、第九天 我趴在偏房一處隱蔽的房頂上張望褐啡。 院中可真熱鬧,春花似錦鳖昌、人聲如沸备畦。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,740評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)懂盐。三九已至,卻和暖如春车要,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背崭倘。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,967評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工翼岁, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人司光。 一個(gè)月前我還...
    沈念sama閱讀 46,315評(píng)論 2 360
  • 正文 我出身青樓琅坡,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親残家。 傳聞我的和親對(duì)象是個(gè)殘疾皇子榆俺,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評(píng)論 2 348

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

  • 什么是同源策略 同源政策(same-origin policy)是指同域名(或ip),同端口,同協(xié)議視為同一個(gè)域坞淮,...
    小囧兔閱讀 497評(píng)論 0 1
  • 什么是同源策略? 同源是瀏覽器出于安全方面的考慮茴晋,只允許與本域下的接口交互。不同源的客戶端腳本在沒(méi)有明確授權(quán)的情況...
    YM雨蒙閱讀 339評(píng)論 1 4
  • 如何在本地偽裝一個(gè)網(wǎng)站 1.編輯hostsmac:sudo vi /etc/hostswindows: C:\W...
    DeeJay_Y閱讀 294評(píng)論 0 0
  • Chapter 1 時(shí)間: 07:19 地點(diǎn):夷陵市黔江湖園岸邊 “有個(gè)女人回窘,快看湖岸邊上有個(gè)女人诺擅!”...
    孝安_閱讀 195評(píng)論 0 0
  • 什么是input? 標(biāo)簽用于搜集用戶信息啡直。根據(jù)不同的 type 屬性值烁涌,輸入字段擁有很多種形式苍碟,輸入字段可以是文本...
    饑人谷_Dylan閱讀 1,208評(píng)論 0 50