Welches davon ist am effektivsten, wenn überprüft wird, ob der Benutzeragent über die richtige Domäne zugreift.
Wir möchten eine kleine js-basierte Warnung im Stil der oberen Leiste anzeigen, wenn sie über eine Art Web-Proxy auf die Domain zugreifen (da dies dazu neigt, die js zu beschädigen).
Wir haben darüber nachgedacht, Folgendes zu verwenden:
var r = /.*domain\.com$/;
if (r.test(location.hostname)) {
// showMessage ...
}
Das würde sich um alle Subdomains kümmern, die wir jemals benutzen.
Welchen Host oder Hostnamen sollten wir verwenden?
In Firefox 5 und Chrome 12:
console.log(location.host);
console.log(location.hostname);
.. zeigt für beide das gleiche.
Liegt das daran, dass sich der Port nicht in der Adressleiste befindet?
W3Schools sagt, dass der Host den Port enthält.
Sollte location.host/hostname validiert werden oder können wir in IE6 + und allen anderen, die es geben wird, ziemlich sicher sein?
Antworten:
Als kleines Memo: die interaktive Link-Anatomie
- -
Kurz gesagt (unter der Annahme eines Standorts von
http://example.org:8888/foo/bar#bang
):hostname
gibt Ihnenexample.org
host
gibt Ihnenexample.org:8888
quelle
:
und des Ports sein sollte. Ich frage mich, wie viel von der Diskussion noch verfügbar ist, alslocation.host
sie formuliert wurde ... Ich vermute, dass sie heute so heißt, weil niemand anwesend war oder daran gedacht hat, diesen RFC zu erwähnen.Der Host enthält nur die Portnummer, falls eine angegeben ist. Wenn die URL keine spezifische Portnummer enthält, wird dieselbe wie der Hostname zurückgegeben. Sie wählen aus, ob Sie mit der Portnummer übereinstimmen möchten oder nicht. Weitere Informationen finden Sie unter https://developer.mozilla.org/en/window.location .
Ich würde annehmen, dass Sie möchten, dass der Hostname nur den Site-Namen erhält.
quelle
Wenn Sie darauf bestehen, das zu verwenden,
window.location.origin
können Sie dies oben in Ihren Code einfügen, bevor Sie das lesenorigin
Lösung
PS: Für die Aufzeichnung war es tatsächlich die ursprüngliche Frage. Es wurde bereits bearbeitet :)
quelle
window.location.origin
in ihrer Frage erwähnt. Ihre Frage bezog sich tatsächlich speziell auf Dinge, die es nicht sindwindow.location.origin
.Ihre Hauptfrage wurde oben beantwortet. Ich wollte nur darauf hinweisen, dass der von Ihnen verwendete Regex einen Fehler aufweist. Es wird auch gelingen, auf
foo-domain.com
dem keine Subdomain von istdomain.com
Was Sie wirklich wollen, ist Folgendes:
quelle
MDN: https://developer.mozilla.org/en/DOM/window.location
Es scheint, dass Sie für beide das gleiche Ergebnis erhalten, aber
hostname
einen eindeutigen Hostnamen ohne Klammern oder Portnummer enthalten.quelle
Nur um einen Hinweis hinzuzufügen, dass der Google Chrome-Browser das Ursprungsattribut für den Standort hat. Damit erhalten Sie die gesamte Domain vom Protokoll bis zur Portnummer, wie im folgenden Screenshot gezeigt.
quelle