JavaScript 跨域總結(jié)與解決辦法

什么是跨域

JavaScript出于安全方面的考慮,不允許跨域調(diào)用其他頁(yè)面的對(duì)象。但在安全限制的同時(shí)也給注入iframe或是ajax應(yīng)用上帶來(lái)了不少麻煩。什么是跨域,簡(jiǎn)單地理解就是因?yàn)镴avaScript同源策略的限制,a.com 域名下的js無(wú)法操作b.com或是c.a.com域名下的對(duì)象。

特別注意兩點(diǎn):
第一,如果是協(xié)議和端口造成的跨域問(wèn)題“前臺(tái)”是無(wú)能為力的,
第二:在跨域問(wèn)題上,域僅僅是通過(guò)“URL的首部”來(lái)識(shí)別而不會(huì)去嘗試判斷相同的ip地址對(duì)應(yīng)著兩個(gè)域或兩個(gè)域是否在同一個(gè)ip上。

1、document.domain+iframe的設(shè)置

對(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文件之間就可以 “交互”了。當(dāng)然這種辦法只能解決主域相同而二級(jí)域名不同的情況,如果你異想天開(kāi)的把script.a.com的domian設(shè)為alibaba.com 那顯然是會(huì)報(bào)錯(cuò)地!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 0. 結(jié)論哈哈哈 主域相同可以設(shè)置document.domain 使用JSONP動(dòng)態(tài)創(chuàng)建script 利用ifra...
    公子七閱讀 1,209評(píng)論 0 6
  • 什么是跨域? 2.) 資源嵌入:、、、等dom標(biāo)簽,還有樣式中background:url()、@font-fac...
    電影里的夢(mèng)i閱讀 2,475評(píng)論 0 5
  • 1. 什么是跨域? 跨域一詞從字面意思看,就是跨域名嘛,但實(shí)際上跨域的范圍絕對(duì)不止那么狹隘。具體概念如下:只要協(xié)議...
    w_zhuan閱讀 622評(píng)論 0 0
  • 1. 什么是跨域? 跨域一詞從字面意思看,就是跨域名嘛,但實(shí)際上跨域的范圍絕對(duì)不止那么狹隘。具體概念如下:只要協(xié)議...
    他在發(fā)呆閱讀 863評(píng)論 0 0
  • 時(shí)光荏苒,又來(lái)到時(shí)光的臨界點(diǎn)。 暖春,北國(guó),陽(yáng)光會(huì)在早上九點(diǎn)熱鬧起來(lái),暖氣房里只要穿著秋衣,一切并沒(méi)有想象中那樣寒...
    千鹽萬(wàn)語(yǔ)閱讀 509評(píng)論 0 1

友情鏈接更多精彩內(nèi)容