Welche dieser Möglichkeiten ist am effektivsten, um zu prüfen, ob der User Agent über die richtige Domain zugreift?
Wir möchten eine kleine js basierte 'top bar' Stil Warnung zeigen, wenn sie die Domäne mit einer Art von Web-Proxy zugreifen (wie es neigt dazu, die js zu brechen).
Wir waren über die Verwendung der folgenden denken:
var r = /.*domain\.com$/;
if (r.test(location.hostname)) {
// showMessage ...
}
Das würde sich um alle Subdomains kümmern, die wir jemals verwenden.
Was sollten wir verwenden: host oder hostname?
In Firefox 5 und Chrome 12:
console.log(location.host);
console.log(location.hostname);
... zeigt bei beiden das gleiche an.
Liegt das daran, dass der Port nicht wirklich in der Adressleiste steht?
Laut W3Schools enthält host den Port.
**Sollte location.host/hostname validiert werden oder können wir ziemlich sicher sein, dass er im IE6+ und allen anderen existiert?
Als kleines Memo: der interaktive Link Anatomie
--
Kurz gesagt (unter der Annahme einer Position von http://example.org:8888/foo/bar#bang
):
hostname
gibt Ihnen example.org
host
liefert Ihnen example.org:8888
host enthält nur die Portnummer, wenn eine angegeben ist. Wenn in der URL keine Portnummer angegeben ist, wird dasselbe zurückgegeben wie bei hostname. Sie entscheiden, ob Sie die Portnummer abgleichen wollen oder nicht. Siehe https://developer.mozilla.org/en/window.location für weitere Informationen.
Ich nehme an, dass Sie mit hostname nur den Namen der Website erhalten möchten.
MDN: https://developer.mozilla.org/en/DOM/window.location
Es scheint, dass Sie das gleiche Ergebnis für beide erhalten, aber Hostname
enthält einen klaren Hostnamen ohne Klammern oder Portnummer.