44 votes

Comment obtenir l'adresse IP d'un client en utilisant jQuery

Je veux savoir comment obtenir l'adresse IP du client en utilisant jQuery ?

Est-ce possible ? Je sais que le javascript pur ne peut pas, mais j'ai obtenu un code utilisant JSONP de Stack Overflow lui-même.

Existe-t-il un moyen de contourner ce problème en utilisant jQuery ?

60voto

CMS Points 315406

JQuery peut gérer JSONP, il suffit de passer une url formatée avec le paramètre callback= ? à la fonction $.getJSON par exemple :

$.getJSON("https://api.ipify.org/?format=json", function(e) {
    console.log(e.ip);
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

Cet exemple est celui d'un service JSONP très simple mis en oeuvre avec api.ipify.org .

Si vous ne cherchez pas une solution inter-domaines, le script peut être encore plus simplifié, puisque vous n'avez pas besoin du paramètre de rappel, et que vous retournez du JSON pur.

1 votes

jsonip.appspot.com soutient aussi apparemment CORS ainsi que JSONP .

1 votes

Le serveur est en panne maintenant, c'est une bonne idée mais je ne pense pas que ce soit fiable.

4 votes

Ce serveur est maintenant hors service. Nous pouvons donc simplement supprimer appspot de jsonip.appspot.com. jsonip.com?callback= ? c'est tout :)

28voto

Alex Sexton Points 7635

Un simple appel AJAX à votre serveur, puis la logique côté serveur pour obtenir l'adresse IP devrait faire l'affaire.

$.getJSON('getip.php', function(data){
  alert('Your ip is: ' +  data.ip);
});

Alors en php vous pourriez faire :

<?php
/* getip.php */
header('Cache-Control: no-cache, must-revalidate');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Content-type: application/json');

if (!empty($_SERVER['HTTP_CLIENT_IP']))
{
  $ip=$_SERVER['HTTP_CLIENT_IP'];
}
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
{
  $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}
else
{
  $ip=$_SERVER['REMOTE_ADDR'];
}
print json_encode(array('ip' => $ip));

4voto

Akash Shah Points 77
function GetUserIP(){
  var ret_ip;
  $.ajaxSetup({async: false});
  $.get('http://jsonip.com/', function(r){ 
    ret_ip = r.ip; 
  });
  return ret_ip;
}

Si vous voulez utiliser l'IP et l'affecter à une variable, essayez ceci. Appelez simplement GetUserIP()

0voto

yacin dj Points 1
<html lang="en">
<head>
    <title>Jquery - get ip address</title>
    <script type="text/javascript" src="//cdn.jsdelivr.net/jquery/1/jquery.min.js"></script>
</head>
<body>

<h1>Your Ip Address : <span class="ip"></span></h1>

<script type="text/javascript">
    $.getJSON("http://jsonip.com?callback=?", function (data) {
        $(".ip").text(data.ip);
    });
</script>

</body>
</html>

1 votes

Pouvez-vous s'il vous plaît fournir un contexte à votre réponse. Par exemple, pourquoi cela fonctionne-t-il ? Y a-t-il des inconvénients ? Merci.

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