跨域的解決方式

跨域有很多種方式,下面就簡單說說跨域最常見的幾種解決方式
1凹髓、JSONP
JSONP是服務(wù)器與客戶端跨源通信的常用方法鸠删。最大特點(diǎn)就是簡單適用,兼容性好抛猫。主要利用html中script標(biāo)簽可以引入其他域的js文件蟆盹,利用這個特性可以實現(xiàn)跨域訪問接口,需要后端的支持闺金。實現(xiàn)步驟:
1.定義數(shù)據(jù)處理函數(shù)fun:
2.網(wǎng)頁通過添加一個<script>元素逾滥,src的地址執(zhí)行后端接口最后加個參數(shù)callback=fun,向服務(wù)器請求JSON數(shù)據(jù)败匹,這種做法不受同源政策限制寨昙;
3.服務(wù)器收到請求后,將數(shù)據(jù)放在fun回調(diào)函數(shù)里傳回來,輸出fun(data):
4.fun(data)會放到script標(biāo)簽作為js執(zhí)行掀亩,此時會調(diào)用fun(data),將data作為參數(shù)舔哪。
代碼地址

若水GIF截圖_2017年6月27日14點(diǎn)36分21秒.gif

2、CORS
CORS全稱是"跨域資源共享"(Cross-origin resource sharing)槽棍。
它允許瀏覽器向跨源服務(wù)器捉蚤,發(fā)出XMLHttpRequest請求抬驴。支持現(xiàn)代瀏覽器,IE10以上瀏覽器缆巧。CORS需要瀏覽器和服務(wù)器的支持布持,因此,實現(xiàn)CORS通信的關(guān)鍵是服務(wù)器陕悬。只要服務(wù)器實現(xiàn)了CORS接口题暖,就可以跨源通信。
當(dāng)CORS請求滿足下面的條件時
1.請求方法是以下三種方法之一:
HEAD
GET
POST
2.HTTP的頭信息不超出以下幾種字段:
Accept
Accept-Language
Content-Language
Last-Event-ID
Content-Type:只限于三個值application/x-www-form-urlencoded墩莫、multipart/form-data芙委、text/plain
基本思想是
1.當(dāng)使用XMLHttpRequest()發(fā)送請求的時候逞敷,瀏覽器發(fā)現(xiàn)該請求不符合同源策略狂秦,會給該請求的頭部信息添加一個origin字段,Origin字段用來說明推捐,本次請求來自哪個源裂问,服務(wù)器根據(jù)這個值,決定是否同意這次請求牛柒。
如果Origin指定的源堪簿,不被服務(wù)器允許,服務(wù)器也會返回正常的HTTP響應(yīng)皮壁,瀏覽器發(fā)現(xiàn)響應(yīng)頭沒有包含origin字段椭更,就拋出錯誤,被onerror回調(diào)函數(shù)捕獲蛾魄,這種錯誤狀態(tài)碼無法識別虑瀑。
2.如果指定的源,被服務(wù)器允許滴须,服務(wù)器返回響應(yīng)信息的響應(yīng)頭會包含origin的信息
代碼地址

若水GIF截圖_2017年6月27日18點(diǎn)1分15秒.gif

多么痛的領(lǐng)悟舌狗,忘記重新啟動服務(wù)器了,結(jié)果沒有返回數(shù)據(jù)扔水,json解析一直報錯痛侍,以后記得重新啟動服務(wù)器。
3魔市、降域(document.domain)
document.domain用于主域相同子域不同的場景
降域的設(shè)置也是有限制的主届,只能把document.domain,設(shè)置成自身或者更高一級的域待德,且主域必須相同君丁,如:a.b.test.com中的某個文檔的域可以設(shè)置成a.b.test.com、b.test.com磅网、test.com谈截。但是不可以設(shè)置成.com或者c.a.b.test.com或者baidu.com,因為baidu.com主域和當(dāng)前域不同了。
使用方法
代碼地址

若水GIF截圖_2017年6月27日17點(diǎn)13分54秒.gif

4簸喂、postMessage
postMessage是html5新增的方法毙死,可以實現(xiàn)跨文本檔、多窗口喻鳄、跨域消息傳遞扼倘。該方法可以通過綁定window的message事件來監(jiān)聽發(fā)送跨文檔消息傳輸內(nèi)容。postMessage(data,origin)方法接受兩個參數(shù):
1.data:要傳遞的數(shù)據(jù)除呵。
2.origin:字符串參數(shù)再菊,指明目標(biāo)窗口的源,協(xié)議+主機(jī)+端口號[+URL]颜曾,URL會被忽略纠拔,所以可以不寫,這個參數(shù)是為了安全考慮postMessage()方法只會將message傳遞給指定窗口泛豪,如果設(shè)置為"*"稠诲,這樣可以傳遞給任意窗口。
代碼地址

若水GIF截圖_2017年6月27日11點(diǎn)4分18秒.gif

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末诡曙,一起剝皮案震驚了整個濱河市臀叙,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌价卤,老刑警劉巖劝萤,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件冕房,死亡現(xiàn)場離奇詭異攘宙,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)耕驰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門炸卑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來既鞠,“玉大人,你說我怎么就攤上這事盖文≈龅埃” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵五续,是天一觀的道長洒敏。 經(jīng)常有香客問我,道長疙驾,這世上最難降的妖魔是什么凶伙? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮它碎,結(jié)果婚禮上函荣,老公的妹妹穿的比我還像新娘显押。我一直安慰自己,他們只是感情好傻挂,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布乘碑。 她就那樣靜靜地躺著,像睡著了一般金拒。 火紅的嫁衣襯著肌膚如雪兽肤。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天绪抛,我揣著相機(jī)與錄音资铡,去河邊找鬼。 笑死幢码,一個胖子當(dāng)著我的面吹牛笤休,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蛤育,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼宛官,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了瓦糕?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤腋么,失蹤者是張志新(化名)和其女友劉穎咕娄,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體珊擂,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡圣勒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了摧扇。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片圣贸。...
    茶點(diǎn)故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖扛稽,靈堂內(nèi)的尸體忽然破棺而出吁峻,到底是詐尸還是另有隱情,我是刑警寧澤在张,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布用含,位于F島的核電站,受9級特大地震影響帮匾,放射性物質(zhì)發(fā)生泄漏啄骇。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一瘟斜、第九天 我趴在偏房一處隱蔽的房頂上張望缸夹。 院中可真熱鬧痪寻,春花似錦、人聲如沸虽惭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽趟妥。三九已至猫态,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間披摄,已是汗流浹背亲雪。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留疚膊,地道東北人义辕。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像寓盗,于是被迫代替她去往敵國和親灌砖。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評論 2 345

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

  • jsonp html中可以通過script標(biāo)簽引入其他域的js傀蚌,利用這一特性基显,結(jié)合后端支持,可以實現(xiàn)跨域訪問接口實...
    billa_8f6b閱讀 426評論 0 0
  • jsonp html中可以通過script標(biāo)簽引入其他域的js善炫,利用這一特性撩幽,結(jié)合后端支持,可以實現(xiàn)跨域訪問接口實...
    madpluto閱讀 300評論 0 0
  • 瀏覽器安全的基石是"同源政策"箩艺。所謂"同源"指的是"三個相同"窜醉。 協(xié)議相同 域名相同 端口相同 同源政策的目的,是...
    cce117b0a0ce閱讀 282評論 0 1
  • 文/一淺疏影 那年江南艺谆,煙雨縹緲榨惰。水墨淡抹,勾勒如畫的古鎮(zhèn)静汤,風(fēng)光旖旎依舊琅催。亭臺軒榭,繞曲回廊撒妈,零星點(diǎn)綴的夜幕下恢暖,木...
    一淺疏影閱讀 1,009評論 24 48
  • 微博自2009年誕生之后曾經(jīng)一路高歌猛進(jìn)挨队,但在2013年,它似乎陷入了危機(jī)蒿往。那時候在用戶眼里盛垦,微博沒什么內(nèi)容可看了...
    老徐的自白書閱讀 597評論 0 0