Ich möchte wissen, wie ich mithilfe von jQuery die Client-IP-Adresse erhalte.
Ist es möglich? Ich weiß, dass reines Javascript nicht möglich ist, habe aber Code mit JSONP
von Stack Overflow selbst erhalten.
Gibt es eine Problemumgehung mit jQuery?
jQuery kann JSONP verarbeiten. Übergeben Sie einfach eine mit callback =? formatierte URL. Parameter für die Methode $.getJSON
, zum Beispiel:
$.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>
Dieses Beispiel zeigt einen sehr einfachen JSONP-Dienst, der mit api.ipify.org
Implementiert wurde.
Wenn Sie keine domänenübergreifende Lösung suchen, kann das Skript noch weiter vereinfacht werden, da Sie den Callback-Parameter nicht benötigen und reines JSON zurückgeben.
Ein einfacher AJAX Aufruf an Ihren Server, und dann sollte die serverseitige Logik zum Abrufen der IP-Adresse den Trick tun.
$.getJSON('getip.php', function(data){
alert('Your ip is: ' + data.ip);
});
Dann könnten Sie in PHP Folgendes tun:
<?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));
function GetUserIP(){
var ret_ip;
$.ajaxSetup({async: false});
$.get('http://jsonip.com/', function(r){
ret_ip = r.ip;
});
return ret_ip;
}
Wenn Sie die IP verwenden und einer Variablen zuweisen möchten, versuchen Sie dies. Rufen Sie einfach GetUserIP()
auf