web-dev-qa-db-ja.com

サブドメインJavascriptのドメイン名を取得します

ドメイン名を取得する方法example.com可能なサブドメインのセットからsub1.example.comsub2.example.comsub3.example.com javascriptを使用しています...?

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

第2レベルドメインのみを取得するには、次のように使用します。

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

これは速いです

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

一般的なソリューションはここで説明されています 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;
})();
1
Dipu R

承認された回答は、セカンドレベルドメインを取得するために機能します。ただし、「パブリックサフィックス」と呼ばれるものを考慮に入れることができます。そうしないと、予期しないエラーが発生する可能性があります。

たとえば、ドメインwww.Amazon.co.uk。セカンドレベルドメインを取得しようとすると、co.uk、これはおそらくあなたが望むものではありません。 co.ukは「パブリックサフィックス」です。つまり、基本的にトップレベルドメインです。 https://publicsuffix.org から取得したパブリックサフィックスの定義を次に示します。

「パブリックサフィックス」とは、インターネットユーザーが名前を直接登録できる(または歴史的に可能であった)サフィックスです。

これがアプリケーションの重要な部分である場合、ドメイン解析のためにpslhttps://github.com/lupomontero/psl )のようなものを調べます。 nodejsとブラウザーで動作し、Mozillaの維持されている公開サフィックスリストでテストされています。

ここに彼らのREADMEからの簡単な例があります:

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');
0
kimbo
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」になります

0
Pietro Coelho