Laquelle de ces méthodes est la plus efficace contre la vérification si l’agent utilisateur accède via le domaine correct.
Nous aimerions montrer un petit avertissement de style 'top bar' basé sur js s’ils accèdent au domaine en utilisant une sorte de proxy web (car cela tend à casser le 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 hôte ou nom d'hôte?
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 assez certains dans IE6 + et tous les autres qu'il existera?
Comme petit mémo: le lien interactif anatomie
-
En bref (en supposant un emplacement de http://example.org:8888/foo/bar#bang
):
hostname
vous donne example.org
Host
vous donne example.org:8888
L'hôte inclut uniquement le numéro de port s'il en existe un spécifié. S'il n'y a pas de numéro de port spécifique dans l'URL, le système retourne le même nom 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.
Si vous insistez pour utiliser le window.location.Origin
Vous pouvez le mettre en haut de votre code avant de lire la Origin
if (!window.location.Origin) {
window.location.Origin = window.location.protocol + "//" + window.location.hostname + (window.location.port ? ':' + window.location.port: '');
}
PS: Pour mémoire, c’était en fait la question initiale. Ils l'ont probablement déjà édité. :)
Vous avez répondu à votre question principale ci-dessus. Je voulais juste souligner que la regex que vous utilisez a un bug. Il réussira également sur foo-domain.com
qui n'est pas un sous-domaine de domain.com
Ce que vous voulez vraiment, c'est ceci:
/(^|\.)domain\.com$/
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.