一:同源策略
1.what's this
所謂同源是指,域名,協(xié)議,端口相同。當(dāng)瀏覽器運(yùn)行一個(gè)JS腳本時(shí)會(huì)進(jìn)行同源檢測(cè),如果不同源是不能執(zhí)行的。
2.源繼承
來(lái)自about:blank,javascript:和data:URLs中的內(nèi)容,繼承了將其載入的文檔所指定的源,因?yàn)樗鼈兊腢RL本身未指定任何關(guān)于自身源的信息。
3.變更源
變更源可以實(shí)現(xiàn)基礎(chǔ)域相同的不同頁(yè)面的跨域問(wèn)題。
如:a.baidu.com/index.html 通過(guò) iframe 引入 b.baidu.com/index.html ,但是a中的JS是不可以操作b中的內(nèi)容的,但是可以通過(guò)修改源來(lái)實(shí)現(xiàn)。需要在a和b中都修改domain,即 document.domain = 'baicu.com'
注意:document.doamin的修改必須是當(dāng)前域或者當(dāng)前域的基礎(chǔ)域,如在a中document.domain = 'b.baidu.com'是報(bào)錯(cuò)的
二:跨域方案
共有幾種解決方案:
(1)document.domain + iframe
(2)動(dòng)態(tài)創(chuàng)建script
(3)window.name + iframe
(4)window.postMessage
(5)CORS
(6)JSONP
(7)nginx代理
1.document.domain + iframe
這種方式就是上面說(shuō)的變更源
在a.name.com/a.html中