7

この質問のバリエーションに対処しているように見えるSOの質問がたくさんあります。しかし、それらは複雑な正規表現の回答になる傾向があり、もっと簡単なものを見つけられることを願っています。

指定された location.host の値

foo.mysite.com
app.foo.mysite.com
mysite.com

ルート ドメインを取得するにはどうすればよいmysite.comですか?

最後から 2 番目の を見つけるようなこともできます.が、これは醜いようで、TLD のようなものでは機能しません.co.uk。jQuery にこの情報を含むオブジェクトがある場合は、喜んで使用します。

私の目標は、すべてのサブドメインに存在する Cookie を作成することです。これを行うには、 を見つける必要があります.mysite.com。私はそれをハードコードしないことを好みます。

4

5 に答える 5

9

ドメインが.com以外からSLDに変更される可能性が非常に低いことを考えると、私はこのようなものをでコーディングしました。

var temp = location.host.split('.').reverse();
var root_domain = '.' + temp[1] + '.' + temp[0];

TLDまたはSLDリストを維持し、それと比較するオーバーヘッドとメンテナンスは、私たちにとってトレードオフの価値がありません。

于 2012-05-03T20:30:17.257 に答える
7

すべてを1行にまとめたい場合 -

document.domain.split('.').reverse().splice(0,2).reverse().join('.')

また

location.hostname.split('.').reverse().splice(0,2).reverse().join('.')

入力用:'foo.example.com', 'foo.bar.example.com', 'foo.bar.fizz.buzz.example.com'

それは戻ります:'example.com'

于 2017-06-15T17:04:59.080 に答える
4

.co.uk を TLD として呼び出すことはできません。これは、実際には第 2 レベルのドメインです。そのため、ルート ドメインが何であるかは常にあいまいです。
ただし、利用可能なすべての TLD とセカンド レベル ドメインを一覧表示して、一致するものを見つけることができます。しかし、それは非常に費用がかかり、退屈な操作になります。
これを行いたい場合は、TLD と SLD のこのリストが役立つ場合があります。

于 2012-05-02T22:22:37.157 に答える
1
const rootDomain = '.' + window.location.hostname.split('.').slice(-2).join('.');
于 2020-04-23T07:28:30.983 に答える