miejsce.host vs lokalizacja.Nazwa hosta i kompatybilność między przeglądarkami?
Który z nich jest najskuteczniejszy w porównaniu do sprawdzania, czy agent użytkownika uzyskuje dostęp przez właściwą domenę.
Chcielibyśmy pokazać małe ostrzeżenie w stylu "top bar" oparte na js, jeśli uzyskują dostęp do domeny za pomocą jakiegoś internetowego proxy (ponieważ ma tendencję do łamania js).
Myśleliśmy o użyciu:
var r = /.*domain\.com$/;
if (r.test(location.hostname)) {
// showMessage ...
}
To zajmie się każdą subdomeną, z której korzystamy.
Którego hosta lub nazwę hosta powinniśmy użyć?
W Firefoksie 5 i Chrome 12:
console.log(location.host);
console.log(location.hostname);
.. pokazuje to samo dla obu.
To dlatego, że port nie znajduje się w pasku adresu?
W3Schools mówi, że host zawiera port.
Powinna lokalizacja.host / Nazwa hosta zostanie zweryfikowana, czy możemy być pewni, że w IE6+ i wszystkich innych będzie istnieć?
6 answers
Jako mała notka: interaktywny link
--
W skrócie (zakładając położenie http://example.org:8888/foo/bar#bang
):
-
hostname
dajeexample.org
-
host
dajeexample.org:8888
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-14 15:02:20
Host zawiera tylko numer portu, jeśli jest określony. Jeśli w adresie URL nie ma konkretnego numeru portu, to zwraca on taki sam jak nazwa hosta. Sam wybierasz, czy chcesz dopasować numer portu, czy nie. Zobacz https://developer.mozilla.org/en/window.location aby uzyskać więcej informacji.
Zakładam, że chcesz, aby nazwa hosta po prostu dostać nazwę strony.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-17 18:37:24
Jeśli nalegasz na użycie window.location.origin
Możesz umieścić to w górnej części kodu przed przeczytaniem origin
if (!window.location.origin) {
window.location.origin = window.location.protocol + "//" + window.location.hostname + (window.location.port ? ':' + window.location.port: '');
}
PS: dla przypomnienia, to było oryginalne pytanie. Pewnie już to zmontowali. :)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-29 12:46:26
Twoje podstawowe pytanie zostało udzielone powyżej. Chciałem tylko zaznaczyć, że regex, którego używasz, ma błąd. Uda się również na foo-domain.com
, która nie jest subdomeną domain.com
To czego naprawdę chcesz to:
/(^|\.)domain\.com$/
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-25 05:01:09
MDN: https://developer.mozilla.org/en/DOM/window.location
Wydaje się, że otrzymasz ten sam wynik dla obu, ale hostname
zawiera przejrzystą nazwę hosta bez nawiasów i numeru portu.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-17 18:39:20
Wystarczy dodać uwagę, że przeglądarka Google Chrome ma atrybut origin dla lokalizacji. co daje całą domenę od protokołu do numeru portu, jak pokazano na poniższym zrzucie ekranu.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-31 10:38:21