获取子域Javascript的域名

时间:2012-11-13 19:28:33

标签: javascript jquery dns subdomain

如何使用javascript ...从可能的子域example.com sub1.example.com sub2.example.com集合中获取域名sub3.example.com

6 个答案:

答案 0 :(得分:70)

var parts = location.hostname.split('.');
var subdomain = parts.shift();
var upperleveldomain = parts.join('.');

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

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

答案 1 :(得分:2)

这更快

const firstDotIndex = subDomain.indexOf('.');
const domain = subDomain.substring(firstDotIndex + 1);

答案 2 :(得分:2)

接受的答案将用于获取第二级域。但是,您可能需要考虑一个叫做“公共后缀”的东西。否则,您可能会得到意想不到的错误结果。

例如,使用域www.amazon.co.uk。 如果仅尝试获取第二级域,则最终会得到co.uk,这可能不是您想要的。这是因为co.uk是一个“公共后缀”,这意味着它实际上是一个顶级域。这是来自https://publicsuffix.org的公共后缀的定义:

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

如果这是您应用程序的关键部分,我将研究类似pslhttps://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');

答案 3 :(得分:0)

这里解释了通用解决方案http://rossscrivener.co.uk/blog/javascript-get-domain-exclude-subdomain 从上面链接

var domain = (function(){
   var i=0,domain=document.domain,p=domain.split('.'),s='_gd'+(new Date()).getTime();
   while(i<(p.length-1) && document.cookie.indexOf(s+'='+s)==-1){
      domain = p.slice(-1-(++i)).join('.');
      document.cookie = s+"="+s+";domain="+domain+";";
   }
   document.cookie = s+"=;expires=Thu, 01 Jan 1970 00:00:01 GMT;domain="+domain+";";
   return domain;
})();

答案 4 :(得分:0)

function getDomain() {
    const hostnameArray = window.location.hostname.split('.')
    const numberOfSubdomains = hostname.length - 2
    return hostnameArray.length === 2 ? window.location.hostname : hostname.slice(numberOfSubdomains).join('.')
}

这将删除所有子域,因此“ a.b.c.d.test.com”将变为“ test.com”

答案 5 :(得分:0)

如果您想验证特定子域是否存在

var parts = location.hostname.split('.');
if(parts.includes('subdomain_to_search_here')){
   //yes
}else{
   //no
}