Welche davon ist am effektivsten, wenn Sie überprüfen, ob der Benutzeragent über die richtige Domäne zugreift.
Wir möchten eine kleine js-basierte Topbar-Warnung anzeigen, wenn sie über eine Art Web-Proxy auf die Domäne zugreifen (da dies dazu neigt, die js zu brechen).
Wir haben über folgendes nachgedacht:
var r = /.*domain\.com$/;
if (r.test(location.hostname)) {
// showMessage ...
}
Das würde für alle Subdomains sorgen, die wir jemals benutzen.
Welchen sollten wir Host oder Hostname verwenden?
In Firefox 5 und Chrome 12:
console.log(location.Host);
console.log(location.hostname);
.. zeigt dasselbe für beide.
Liegt das daran, dass sich der Port nicht tatsächlich in der Adressleiste befindet?
W3Schools sagt, der Host enthält den Port.
Sollte location.Host/hostname validiert werden oder können wir in IE6 + und allen anderen, die es gibt, ziemlich sicher sein?
Als kleines Memo: die interaktive Link-Anatomie
-
Kurz gesagt (vorausgesetzt, ein Ort von http://example.org:8888/foo/bar#bang
):
hostname
gibt Ihnen example.org
Host
gibt Ihnen example.org:8888
Der Host enthält nur die Portnummer, wenn eine angegeben ist. Wenn die URL keine Portnummer enthält, wird der Hostname zurückgegeben. Sie wählen, ob Sie die Portnummer abgleichen möchten oder nicht. Siehe https://developer.mozilla.org/en/window.location für weitere Informationen.
Ich würde davon ausgehen, dass Sie möchten, dass der Hostname nur den Site-Namen erhält.
Wenn Sie darauf bestehen, den window.location.Origin
zu verwenden, können Sie diesen in Ihren Code einfügen, bevor Sie die Origin
lesen
if (!window.location.Origin) {
window.location.Origin = window.location.protocol + "//" + window.location.hostname + (window.location.port ? ':' + window.location.port: '');
}
PS: Für das Protokoll war es eigentlich die ursprüngliche Frage. Sie haben es wahrscheinlich schon bearbeitet. :)
Ihre Hauptfrage wurde oben beantwortet. Ich wollte nur darauf hinweisen, dass die Regex, die Sie verwenden, einen Fehler hat. Es wird auch auf foo-domain.com
gelingen, die keine Unterdomäne von domain.com
ist.
Was Sie wirklich wollen, ist folgendes:
/(^|\.)domain\.com$/
MDN: https://developer.mozilla.org/de/DOM/window.location
Es scheint, dass Sie für beide das gleiche Ergebnis erhalten, aber hostname
enthält einen eindeutigen Hostnamen ohne Klammern oder Portnummern.