web-dev-qa-db-fra.com

Comment obtenir l'adresse IP du client à l'aide de jQuery

Je veux savoir comment obtenir l'adresse IP du client à l'aide de jQuery?

C'est possible? Je sais que javascript pur ne peut pas, mais j'ai obtenu du code en utilisant JSONP de Stack Overflow lui-même.

Alors, existe-t-il une solution de contournement en utilisant jQuery?

39
Wondering

jQuery peut gérer JSONP, il suffit de passer une URL formatée avec le rappel =? au paramètre $.getJSON méthode, 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 d'un service JSONP vraiment simple implémenté avec api.ipify.org.

Si vous ne recherchez pas une solution interdomaine, le script peut être encore plus simplifié, car vous n'avez pas besoin du paramètre de rappel et vous retournez du JSON pur.

56
CMS

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);
});

Ensuite, 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));
26
Alex Sexton
function GetUserIP(){
  var ret_ip;
  $.ajaxSetup({async: false});
  $.get('http://jsonip.com/', function(r){ 
    ret_ip = r.ip; 
  });
  return ret_ip;
}

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

3
Akash Shah