什么是跨域
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.html和http://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ò)地!