Tuesday, October 13, 2015

[JavaScript] 超簡單!放寬同源準則 (在相同網域下 兩個不同子網域的網頁 彼此互動)

A網頁的url: http://a.myweb.com
B網頁的url: https://b.myweb.com
因為安全性的因素,JavaScript 會禁止 A、B 兩個網頁彼此互動,這是所謂的"同源準則"(same-origin policy),有一個簡單的方法可以解開這個限制,如下:

A網頁加上:
<script>

document.domain = "mywed.com";
</script>

B網頁加上:
<script>

document.domain = "mywed.com";
</script>

這樣兩個網頁就可以用 opener 等方式互動啦。

補充:
1. 這個方式只適用相同網域的不同子網域的兩個網頁,如果連網域都不同,就不適用喔。
2. 即便是相同子網域,其中一個有設定 document.domain ,另一個沒有設定,就不能互動喔。<參考>
Note: 為了讓子網域可以安全的存取其母網域,我們需要一起改變子、母網域的document.domain 為相同值,即使只是將母網域設回原始值也是必要,否則將會導致允許錯誤。

No comments:

Post a Comment