获取子域Javascript的域名

新手上路,请多包涵

How i can get the domain name example.com from the set of possible subdomains sub1.example.com sub2.example.com sub3.example.com using javascript …?

原文由 Aleksov 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 430
2 个回答
var parts = location.hostname.split('.');
var subdomain = parts.shift();
var upperleveldomain = parts.join('.');

要仅获取二级域,您可以使用

var parts = location.hostname.split('.');
var sndleveldomain = parts.slice(-2).join('.');

原文由 Bergi 发布,翻译遵循 CC BY-SA 4.0 许可协议

接受的答案将有助于获得二级域名。但是,您可能需要考虑称为“公共后缀”的东西。否则,您可能会得到意想不到的错误结果。

例如,以域 www.amazon.co.uk 。如果您只是尝试获取二级域名,您最终会得到 co.uk ,这可能不是您想要的。那是因为 co.uk 是一个“公共后缀”,这意味着它本质上是一个顶级域。这是公共后缀的定义,取自 https://publicsuffix.org

“公共后缀”是互联网用户可以(或历史上可以)直接注册名称的后缀。

如果这是您应用程序的关键部分,我会研究类似 psl ( https://github.com/lupomontero/psl ) 的域解析。它适用于 nodejs 和浏览器,并在 Mozilla 维护的公共后缀列表上进行了测试。

这是他们的自述文件中的一个简单示例:

 var psl = require('psl');

// TLD with some 2-level rules.
psl.get('uk.com'); // null);
psl.get('example.uk.com'); // 'example.uk.com');
psl.get('b.example.uk.com'); // 'example.uk.com');

原文由 kimbo 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题