ユーザーエージェントが正しいドメインを介してアクセスしているかどうかを確認することに対して、これらのうちどれが最も効果的です。
ある種のWebプロキシを使用してドメインにアクセスしている場合は、jsベースの小さな「トップバー」スタイルの警告が表示されます(jsが壊れる傾向があるため)。
私たちは以下を使うことを考えていました:
var r = /.*domain\.com$/;
if (r.test(location.hostname)) {
// showMessage ...
}
それは私達が今までに使ったどんなサブドメインの世話もするでしょう。
ホストとホスト名のどちらを使うべきですか?
Firefox 5とChrome 12の場合:
console.log(location.Host);
console.log(location.hostname);
どちらも同じです。
ポートは実際にはアドレスバーにないためですか?
W3Schools はHostにportが含まれていると言っています。
location.Host/hostnameを検証する必要がありますか、それともIE6以降で確実に存在することができますか?
ちょっとしたメモとして: インタラクティブリンクの解剖学
-
手短に言うと(http://example.org:8888/foo/bar#bang
の場所を仮定して):
hostname
はあなたにexample.org
を与えますHost
はあなたにexample.org:8888
を与えますポート番号が指定されている場合は、ホストにそのポート番号が含まれるだけです。 URLに特にポート番号がない場合は、hostnameと同じ値を返します。ポート番号を一致させるかどうかを選択します。詳細については、 https://developer.mozilla.org/en/window.location を参照してください。
私はあなたがhostnameにちょうどサイト名を取得してほしいと思うでしょう。
あなたがwindow.location.Origin
を使うことを主張しているならば、あなたはOrigin
を読む前にあなたのコードの上にこれを置くことができます
if (!window.location.Origin) {
window.location.Origin = window.location.protocol + "//" + window.location.hostname + (window.location.port ? ':' + window.location.port: '');
}
シモンズ:記録のために、それは実際に最初の質問でした。すでに編集されています:)
あなたの主な質問は上で答えられました。私はちょうどあなたが使っている正規表現にバグがあることを指摘したいと思いました。 foo-domain.com
のサブドメインではないdomain.com
でも成功します。
あなたが本当に欲しいのはこれです:
/(^|\.)domain\.com$/
MDN: https://developer.mozilla.org/ja/DOM/window.location
どちらでも同じ結果が得られるようですが、hostname
には、角かっこやポート番号のない明確なホスト名が含まれています。