當有多個子網域 (subdomain) 時方便在 JavaScript 裡 set-cookie
此解法是抓取目前網址,從 Domain 最後一段開始測試是否 set-cookie 成功,如果成功就是 Root Domain
舉例在網址 promo.example.com.tw
時的測試順序,:
- “.tw”
失敗
- “.com.tw”
失敗
- “.example.com.tw”
成功,這個就是 Root Domain
Code
window.ROOT_DOMAIN = (function() {
let hostname = document.location.hostname.split('.');
if( hostname.length === 1)
{
return hostname[0];
}
let tryCookie = 'try_get_root_domain=cookie';
for (let i = hostname.length - 1; i >= 0; i--)
{
let tryingName = hostname.slice(i).join('.');
document.cookie = tryCookie + ';domain=.' + tryingName + ';';
if (document.cookie.indexOf(tryCookie) > -1)
{
document.cookie = tryCookie.split('=')[0] + '=;domain=.' + tryingName + ';expires=Thu, 01 Jan 1970 00:00:01 GMT;';
return tryingName;
}
}
})();
window.ROOT_DOMAIN; // return "example.com.tw"