分類
Javascript

Javascript的同一父網域下的crossdomain問題

今天在處理一個單純的 popup window (利用 window.open) 的子視窗, 在子視窗內進行 window.opener 的函數調用, 一般的狀況下, 都在同一網站(列如都在 www.foo.com)下沒有 cross domain 的問題, 但若是在兩個不同 domain 時(例如 www.foo.com 及 www.foo2.com), 就會有 cross domain 問題. 這個其實是一個單純的 security 問題.

不過若是今天是在同一家公司內的 cross domain, 例如 www1.foo.com 及 www2.foo.com 兩個 domain 下要執行這樣 cross domain 時, 是否能解決呢? 答案是肯定的, 其實和 cookie 域名共用設定方式相同, 上級域名共用的狀況下, 可以進行 document.domain 的設定以達成此項目的.

我們可以分別在 page1 在 www1.foo.com 及 page2 在 www2.foo.com 的網頁內 javascript 要執行 cross domain 指令前先執行

document.domain = "foo.com";

再繼續後續的程式碼即可, 這樣就不會有 cross domain 的問題囉.
不過也是有一些限制, 就是必須是在同樣的上級域名下, 才能使用, 而且也無法在 www1.foo.com 上將 document.domain 設定為 foo2.com 這樣的 domain, 這個原理其實和 cookie 的 domain 原理是相同的.

參考資料:
http://www.lhelper.org/tech/communicate_between_domains.html
http://www.cnblogs.com/xiaozhang/archive/2006/07/27/461306.html
http://www.mozilla.org/projects/security/components/same-origin.html
http://msdn2.microsoft.com/en-us/library/ms533028.aspx

live.com提供了自訂網域的信箱服務

真是不得了了, 今天在逛網站時, 看到一個可以免費申請信箱的資訊, 看著看著就研究了一下:
http://www.digitalwall.com/mail/

在數位之牆網站上提供了免費申請信箱的訊息, 但又是 live.com 提供的, 於是連回 live.com 後, 發現這是一個很精彩的”免費”服務(live.com上寫的名稱為Windows Live Custom Domains), 就是讓有網域的人(或企業)申請免費的自訂網域的超大信箱(1~2G). 這是一個很不錯的服務. 免費信箱, 超大容量已經不稀奇了, 特別的是信箱又是自訂的域名(當然必須是這個域名的擁有者才能申請), 這樣一來, 對於想提供免費信箱, 或是小公司想擁有信箱代管服務都是很實用的.

接下來我們來看看如何申請. 第一, 先到 http://domains.live.com 進行帳號申請, 接下來需要輸入域名(domain name), 再下一步就是選個管理員帳號(可用原有的 live.com帳號, 或新建一個), 接下來就是要設定申請domain的mx記錄了, live.com會提供一個domain name讓申請者設定回原域名下的mx記錄, 如此一來便能進行信件主機指定至live.com的主機囉.