Lequel d'entre eux est le plus efficace par rapport à la vérification si l'agent utilisateur accède via le domaine correct.
Nous aimerions afficher un petit avertissement de style "barre supérieure" basé sur js s'ils accèdent au domaine en utilisant une sorte de proxy Web (car cela a tendance à casser les js).
Nous pensions utiliser les éléments suivants:
var r = /.*domain\.com$/;
if (r.test(location.hostname)) {
// showMessage ...
}
Cela prendrait en charge tous les sous-domaines que nous utilisons.
Lequel devrions-nous utiliser host ou hostname?
Dans Firefox 5 et Chrome 12:
console.log(location.host);
console.log(location.hostname);
.. montre la même chose pour les deux.
Est-ce parce que le port n'est pas réellement dans la barre d'adresse?
W3Schools dit que l'hôte contient le port.
Faut-il valider location.host/hostname ou pouvons-nous être à peu près certains dans IE6 + et tous les autres, il existera?
Réponses:
Petit mémo: l' anatomie du lien interactif
-
En bref (en supposant un emplacement de
http://example.org:8888/foo/bar#bang
):hostname
vous donneexample.org
host
vous donneexample.org:8888
la source
:
et du port. Je me demande dans quelle mesure la discussion est encore disponible depuis le moment où ellelocation.host
a été formulée ... Je soupçonne qu'elle porte ce nom aujourd'hui car personne n'a lu ou pensé à mentionner ce RFC.l'hôte inclut simplement le numéro de port s'il en est spécifié un. S'il n'y a pas de numéro de port spécifiquement dans l'URL, il renvoie le même que le nom d'hôte. Vous choisissez si vous souhaitez faire correspondre le numéro de port ou non. Voir https://developer.mozilla.org/en/window.location pour plus d'informations.
Je suppose que vous voulez que le nom d'hôte obtienne simplement le nom du site.
la source
Si vous insistez pour utiliser le
window.location.origin
Vous pouvez mettre ceci en haut de votre code avant de lire leorigin
Solution
PS: Pour mémoire, c'était en fait la question d'origine. Il a déjà été édité :)
la source
window.location.origin
dans leur question. En fait, leur question concernait spécifiquement les choses qui ne le sont paswindow.location.origin
.Votre question principale a été répondue ci-dessus. Je voulais juste souligner que l'expression régulière que vous utilisez a un bug. Il réussira également sur
foo-domain.com
lequel n'est pas un sous-domaine dedomain.com
Ce que vous voulez vraiment, c'est ceci:
la source
MDN: https://developer.mozilla.org/en/DOM/window.location
Il semble que vous obtiendrez le même résultat pour les deux, mais
hostname
contient un nom d'hôte clair sans crochets ni numéro de port.la source
Juste pour ajouter une note que le navigateur Google Chrome a un attribut d'origine pour l'emplacement. qui vous donne le domaine entier du protocole au numéro de port comme indiqué dans la capture d'écran ci-dessous.
la source