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

Je veux vérifier mon javascript si la page de chargement est sur ma machine locale.

La raison pour laquelle je veux le faire est que lorsque je développe, j’aime m’assurer que la validation de mon 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 indicateur dans mon logiciel de validation de jquery qui laisse toujours passer les données non valides. De cette façon, je vois les erreurs côté client et serveur en même temps.

Cependant, pour le moment, je dois aller et venir manuellement pour passer du développement à la production.

La variable location.hostname vous donne l’hôte actuel. Cela devrait être suffisant pour déterminer l’environnement dans lequel vous vous trouvez.

 if (location.hostname === "localhost" || location.hostname === "127.0.0.1") alert("It's a local server!"); 

si vous lancez du HTML statique dans un navigateur, par exemple depuis un file:///C:/Documents and Settings/Administrator/Desktop/ tel file:///C:/Documents and Settings/Administrator/Desktop/ Détecter “localhost” ne fonctionnera pas. location.hostname renverra une chaîne vide. alors

 if (location.hostname === "localhost" || location.hostname === "127.0.0.1" || location.hostname === "") alert("It's a local server!"); 

Un moyen simple de le faire serait de vérifier le nom d’hôte contre localhost ou de vérifier votre nom de domaine personnalisé par rapport à une sous-chaîne, en l’occurrence les URL “.local”, telles que http: //testsite.local.

 var myUrlPattern = '.local'; if (window.location.hostname === "localhost" || location.hostname === "127.0.0.1" || window.location.hostname.indexOf(myUrlPattern) >= 0) { alert("It's a local server!"); } 

Toujours pas un piège mais ça pourrait être une petite amélioration. Vous pouvez maintenant créer un tableau de domaines et utiliser .includes

 const LOCAL_DOMAINS = ["localhost", "127.0.0.1", ...]; if (LOCAL_DOMAINS.includes(window.location.hostname)) alert("It's a local server!"); 

Vous pouvez détecter dans un de vos codes derrière des pages avec c #, comme ceci:

 if ((Request.Url.Host.ToLower() == "localhost")) { // ..., maybe set an asp:Literal value that's in the js } 

Ou si vous voulez le faire à partir du script client, vous pouvez vérifier la valeur de window.location.host.

 if (window.location.host == "localhost") { // Do whatever } 

J’espère que cela t’aides.

Les réponses ci-dessus résolvent principalement le problème mais …

  • Et si localhost n’est pas nécessairement “localhost /”?
  • Que se passe-t-il si vous voulez faire une validation FE pendant le développement?
  • Que faire si vous voulez des comportements différents pendant le dev
    (par exemple validation, validation, pas de validation )

Une solution consiste à définir le hachage de l’emplacement et à le vérifier.

http://myname.foo.com/form.html#devValidation

Vous pouvez append des options illimitées avec un commutateur

 switch(location.hash) {} case '#devValidation': // log the results and post the form break; case '#beValidation': // skip front end validation entirely break; case '#noValidation': // skip all validation $('[name=validationType']).val('novalidation'); break; case '#feValidation': default: // do fe validation break; }