Vous pouvez Obtenir Un Local Utilisateurs de l'Adresse IP LAN Via JavaScript?
Je sais que la réaction initiale à cette question est "non" et "il ne peut pas être fait", et "vous ne devriez pas en avoir besoin, vous faites quelque chose de mal". Ce que j'essaie de faire est d'obtenir les utilisateurs de l'adresse IP LAN, et de l'afficher sur la page web. Pourquoi? Parce que c'est ce que la page que je suis en train de travailler sur est tout au sujet, montrant autant d'informations que possible au sujet de vous, le visiteur:
http://www.whatsmyip.org/more-info-about-you/
Donc je ne suis pas en train de FAIRE quelque chose avec l'IP, autre que de montrer à l'utilisateur à des fins d'information. J'ai utilisé pour ce faire à l'aide d'un petit applet Java. Il a fonctionné assez bien. Mais ces jours-ci, le navigateur vous faire toucher d'accord et la confiance de nombreuses reprises, à courir, même les plus mineures de l'applet java, que je préfère ne pas l'exécuter du tout.
Donc, pour un moment, j'ai juste à se débarrasser de cette fonctionnalité, mais je voudrais le récupérer si possible. C'était quelque chose que j'ai, en tant que consultant informatique, utilisation de temps à autre. Il est plus rapide d'aller sur ce site pour voir ce que plage d'adresses IP d'un réseau est en cours d'exécution sur, que c'est pour aller dans les Préférences Système, Réseau et quelle que soit l'interface est active.
Alors je me demandais, en espérant que, s'il y a une manière de le faire en javascript seul? Peut-être quelques nouveaux objets, vous pouvez accéder, de la même façon javascript peut demander au navigateur où est l'emplacement géographique sur la terre est. Peut-être theres quelque chose de similaire pour le client, de mise en réseau de l'information? Si non, peut-être theres une autre façon entièrement le faire? La seule façon que je peux penser sont une applet java ou un objet flash. Je préfère ne pas faire l'une de ces.
- Vous connaissez la réponse. Pourquoi demander alors? Les applets Java ou flash objets sont peu susceptibles d'être autorisés par les utilisateurs (peut-être seulement par ceux qui sont nouveaux dans l'Internet) - il n'est donc pas une solution dans la plupart des cas. ActiveX et à proximité des choses est de travailler uniquement dans IE - et, par conséquent, les utilisateurs d'autres navigateurs ne seront pas touchés (et, de plus, même sous IE, il y a une politique de sécurité qui empêche le web-site de faire de mauvaises choses)
- Mon adresse IP est capturé thru
HTTP_X_FORWARDED_FOR
sur cette page, just sayin`. - Pourquoi me demandez-vous alors? Parce que peut-être, juste peut-être, je ne sais pas tout.
- Juste un headsup, les dernières versions de Chrome de cette écriture sont désormais faute de. "propriété intellectuelle" n'est pas retourné par le candidat, au lieu "adresse" est retourné, qui semble être en MAC, pas d'IP. Il y avait des avertissements dans le CCF docs sur la dépréciation de l'interface de rappel. Donc la réponse (à l'aide de la Promesse) pourrait encore être ok. Permettra de tester plus tard - fonctionne encore sur MOZ.
Vous devez vous connecter pour publier un commentaire.
Comme il s'avère, la récente WebRTC extension de HTML5, javascript permet d'interroger le local adresse IP du client. Une preuve de concept est disponible ici: http://net.ipcalf.com
Cette fonctionnalité est apparemment de par leur conception, et n'est pas un bug. Toutefois, compte tenu de son caractère controversé, je serais prudent au sujet en s'appuyant sur ce comportement. Néanmoins, je pense que c'parfaitement et répond parfaitement à vos besoins (en révélant à l'utilisateur que leur navigateur est en fuite).
En plus de afourney la réponse de ce code fonctionne dans les navigateurs qui prennent en charge WebRTC (Chrome et Firefox). J'ai entendu qu'il y a un mouvement pour mettre en œuvre une fonctionnalité qui rend les sites demande de la propriété intellectuelle (comme dans le cas de l'utilisateur de la géo-localisation ou de l'utilisateur-médias), même si elle doit encore être mis en œuvre dans l'un de ces navigateurs.
Ici est une version modifiée de la le code source, réduit les lignes, de ne pas prendre de stun demandes puisque vous ne voulez IP Locale de ne pas l'IP Publique:
Nous créons un mannequin peer connexion à distance par les pairs à nous contacter. Nous sommes en général d'échange de glace candidats les uns avec les autres et la lecture de la glace candidats, nous pouvons dire à l'ip de l'utilisateur.
Vous pouvez trouver une démonstration à l' --> Démo
J'ai nettoyé mido la poste et puis nettoyé la fonction qu'ils ont trouvé. Ce sera soit de retour
false
ou unarray
. Lors de l'essai de rappelez-vous que vous avez besoin à l'effondrement de la matrice dans la web developer console sinon c'est non intuitives comportement par défaut peut vous tromper en pensant que c'est de retourner un videarray
.Veuillez en outre garder à l'esprit les gens que ce n'est pas quelque chose de vieux-nouveau comme CSS
border-radius
si l'un de ces bits est carrément pas pris en charge par IE11 et plus. Toujours utilisation de la détection d'objet, de test dans les navigateurs plus anciens (par exemple, Firefox 4, IE9, Opera 12.1) et assurez-vous que votre plus récents, les scripts ne sont pas casser vos nouveaux bits de code. En outre toujours détecter le code conforme aux standards première donc si il y a quelque chose à dire CSS préfixe de détecter la norme de non-préfixés code première avant de retomber comme dans le soutien à long terme, finira par être normalisée pour le reste de son existence.ip
ligne 3 et la ligne 8.<input name="example1" type="hidden" value="whatever" />
ou de l'utilisation d'AJAX POST dans une telle situation. Je recommande fortement l'étude de maajax()
fonction ici: jabcreations.com/docs/javascriptLa API WebRTC peut être utilisé pour récupérer le local du client IP.
Toutefois, le navigateur ne les prend pas en charge ou le client peut avoir désactivé pour des raisons de sécurité. En tout cas, il ne faut pas compter sur ce "hack" sur le long terme, car il est susceptible d'être corrigé à l'avenir (voir Cullen Moelleux Jennings réponse).
ECMAScript 6 code ci-dessous montre comment le faire.
Avis j'écris
return resolve(..)
oureturn reject(..)
comme un raccourci. Ces deux fonctions ne retourne rien.Alors vous peut avoir quelque chose à ceci :
Vous pouvez trouver plus d'informations sur les limitations des navigateurs probablement ajouter à atténuer cela et ce que l'IETF est en train de faire à ce sujet ainsi que le pourquoi de ce qui est nécessaire à L'IETF SPEC sur la propriété intellectuelle de la manipulation