Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

获取当前域名的根域

  昨天的文章中纠结了获取根域名的问题,其实我最终还是有一个解决方案的,只不过不太漂亮,而且只能用于获取当前域下的根域。其实原理很猥琐,就是把当前域名拆分开,一截截地尝试写 Cookie,直到能写入 Cookie 则将其视为当前域的根域。
  下面是实现的代码 var getRootDomain = function() {
  // Create a random stream
  var rnd = '';
  while(rnd.length < 32) rnd += Math.floor(Math.random() * 2821109907456).toString(36);
  rnd = rnd.slice(0, 32);
  // Get a GMT string of next second
  var nextSecond = new Date(new Date().getTime() + 1E3).toGMTString();
  // Split current host
  var chips = location.host.split('.');
  // Try to match and return
  var result = chips.pop();
  while(!~document.cookie.indexOf(rnd) && chips.length) {
    result = chips.pop() + '.' + result;
    document.cookie = rnd + '=; Domain=' + result + '; Expires=' + nextSecond;
  }
  return result;
};
  下面我改了本地的 hosts 文件,测试几个奇葩的域名 127.0.0.1 google.com
127.0.0.1 google.co.jp
127.0.0.1 time.bj.cn
127.0.0.1 www.net.cn
127.0.0.1 www.jx.cn
  在 Chrome 41 上测试的结果是以上所有域名本身都是根域。那最后两个 www 打头的让人乍一看以为是什么的子域名,实际上它本身就是根域,只不过以「www」这个词去注册了而已。
网名:
3.80.55.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^