Który z nich jest najbardziej skuteczny w porównaniu do sprawdzania, czy agent użytkownika uzyskuje dostęp za pośrednictwem właściwej domeny.
Chcielibyśmy wyświetlać małe ostrzeżenie w stylu „górnego paska” oparte na js, jeśli uzyskują dostęp do domeny przy użyciu jakiegoś proxy sieci web (ponieważ ma to tendencję do łamania js).
Myśleliśmy o zastosowaniu następujących elementów:
var r = /.*domain\.com$/;
if (r.test(location.hostname)) {
// showMessage ...
}
To zadbałoby o wszystkie poddomeny, których kiedykolwiek używamy.
Którego hosta lub nazwy hosta powinniśmy używać?
W przeglądarce Firefox 5 i Chrome 12:
console.log(location.host);
console.log(location.hostname);
.. pokazuje to samo dla obu.
Czy to dlatego, że portu nie ma w pasku adresu?
W3Schools mówi, że host zawiera port.
Czy lokalizacja.host/nazwa_hosta powinna zostać zweryfikowana, czy możemy być całkiem pewni w IE6 + i wszystkich innych, które będą istnieć?
Odpowiedzi:
Jako mała notatka: interaktywna anatomia łącza
-
W skrócie (zakładając lokalizację
http://example.org:8888/foo/bar#bang
):hostname
daje Ciexample.org
host
daje Ciexample.org:8888
źródło
:
i portu. Zastanawiam się, jaka część dyskusji jest wciąż dostępna od czasu, gdylocation.host
była formułowana ... Podejrzewam, że nazywa się tak dzisiaj, ponieważ nikt z obecnych nie czytał ani nie wspominał o RFC.host zawiera tylko numer portu, jeśli jest określony. Jeśli w adresie URL nie ma numeru portu, zwraca on taki sam jak nazwa hosta. Ty decydujesz, 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 otrzymała nazwę witryny.
źródło
Jeśli nalegasz na użycie
window.location.origin
Możesz umieścić to na górze kodu przed przeczytaniemorigin
Rozwiązanie
PS: Dla przypomnienia, to było pierwotnie pytanie. To było już edytowane :)
źródło
window.location.origin
w swoim pytaniu. Ich pytanie dotyczyło konkretnie rzeczy, które nie sąwindow.location.origin
.Odpowiedzi na twoje podstawowe pytanie podano powyżej. Chciałem tylko zwrócić uwagę, że regex, którego używasz, zawiera błąd. Uda się również,
foo-domain.com
co nie jest poddomenądomain.com
To, czego naprawdę chcesz, to:
źródło
MDN: https://developer.mozilla.org/en/DOM/window.location
Wygląda na to, że otrzymasz ten sam wynik dla obu, ale
hostname
zawiera czystą nazwę hosta bez nawiasów ani numeru portu.źródło
Wystarczy dodać notatkę, że przeglądarka Google Chrome ma atrybut pochodzenia dla lokalizacji. co daje całą domenę od protokołu do numeru portu, jak pokazano na poniższym zrzucie ekranu.
źródło