144 votes

Comment vérifier avec javascript si la connexion est un hôte local ?

Je veux vérifier dans mon javascript si la page qui se charge est sur ma machine locale.

La raison pour laquelle je veux faire cela est que lorsque je développe, j'aime m'assurer que la validation côté serveur (C#) fonctionne correctement. J'aime donc voir apparaître les erreurs côté client et côté serveur.

Donc, pendant que je teste, j'ai un drapeau dans mon truc de validation jquery qui laisse toujours passer les données invalides. De cette façon, je vois les erreurs côté client et côté serveur en une seule fois.

Cependant, à l'heure actuelle, je dois effectuer manuellement les changements nécessaires pour passer du développement à la production.

0voto

mikiqex Points 126

L'expression régulière est plus lente*, mais courte et nette. De plus, personne ici ne vérifie l'IPv6 localhost (::1)

/localhost|127\.0\.0\.1|::1|\.local|^$/i.test(location.hostname)

Il vérifie la présence du domaine général localhost, .local et file : (nom d'hôte vide).

*) Dans Chrome, la performance de [].includes(...) est le meilleur (42 ms), suivi d'une simple boucle (for, while) avec vérification des éléments d'un tableau (119 ms), puis de l'option [].indexOf(...) > -1 (289 ms) et enfin l'expression rationnelle (566 ms). Mais ces mesures sont en quelque sorte relatives, car les navigateurs sont optimisés différemment. Dans FF 52 ESR includes y indexOf ont des résultats similaires, regexp est 2× plus lent et loop 6× plus lent.

0voto

saddy Points 11

Sur la base des commentaires ci-dessus, l'expression régulière suivante m'a aidé à vérifier si l'url est 'localhost', n'importe quelle adresse IP IPv4 ou IPv6.

window.location.hostname.match(/localhost|[0-9]{2,3}\.[0-9]{2,3}\.[0-9]{2,3}\.[0-9]{2,3}|::1|\.local|^$/gi)

0voto

Julian Knight Points 2199

Bon nombre des réponses données ici ne tiennent pas compte de certains cas particuliers. Par exemple, en fonction de DNS/hosts/etc, vous pourriez avoir something.localhost .

Voici donc une réponse ES6 un peu plus complète :

const localHost = ['localhost', '127.0.0.1', '::1', ''].includes(window.location.hostname) || window.location.hostname.endsWith('.localhost')

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X