web-dev-qa-db-ja.com

jQueryを使用してクライアントIPアドレスを取得する方法

JQueryを使用してクライアントIPアドレスを取得する方法を知りたいですか?

出来ますか?純粋なjavascriptではできないことは知っていますが、Stack Overflow自体からJSONPを使用したコードを入手しました。

だから、jQueryを使用して回避策はありますか?

39
Wondering

jQueryはJSONPを処理できます。callback=?でフォーマットされたURLを渡すだけです$.getJSONメソッドへのパラメーター、例えば:

$.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>

この例は、api.ipify.orgで実装された非常に単純なJSONPサービスのものです。

クロスドメインソリューションを探していない場合は、コールバックパラメーターが不要で、純粋なJSONを返すため、スクリプトをさらに簡素化できます。

56
CMS

単純なAJAX=サーバーへの呼び出しと、IPアドレスを取得するサーバーサイドロジックがトリックを行う必要があります。

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

次に、PHPで次のようにします。

<?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;
}
_

IPを使用して変数に割り当てる場合は、これを試してください。 GetUserIP()を呼び出すだけです

3
Akash Shah