Javascriptを使用して変数「myIp」に保存して、次のページ( http://l2.io/ip またはその他)からIPアドレスを読み取りたいと思います。
function getMyIP() {
var myIp;
...
return myIp;
}
どうすればいい?
リンク先サイト を確認すると、IPアドレスを含むグローバル変数として設定される?var=desiredVarName
パラメーターを渡すスクリプトタグを含めることができます。
<script type="text/javascript" src="http://l2.io/ip.js?var=myip"></script>
<!-- ^^^^ -->
<script>alert(myip);</script>
これは(プロキシまたはスプーフィングされたリクエストヘッダーを使用して)簡単にスプーフィングされる可能性があると言う必要はありませんが、いずれにしても注目に値します。
ページがhttps
プロトコルを使用して提供される場合、ほとんどのブラウザーはhttp
プロトコル(スクリプトと画像を含む)を使用して提供される同じページのコンテンツをブロックするため、オプションはかなり制限されます。 1日あたり5,000件未満のヒットがある場合、 Smart IP API を使用できます。例えば:
<script>
var myip;
function ip_callback(o) {
myip = o.Host;
}
</script>
<script src="https://smart-ip.net/geoip-json?callback=ip_callback"></script>
<script>alert(myip);</script>
編集:どうやら、このhttps
サービスの証明書の有効期限が切れているため、ユーザーは手動で例外を追加する必要があります。 APIを直接開いて、証明書の状態を確認します。 https://smart-ip.net/geoip-json
バックエンドサーバーロジックを使用する場合の最も復元力のあるシンプルな方法は、リクエスターのIPを<script>
タグ内に単純に出力することです。これにより、外部リソースに依存する必要がなくなります。例えば:
PHP:
<script>var myip = '<?php echo $_SERVER['REMOTE_ADDR']; ?>';</script>
また、より堅牢なPHPソリューション(プロキシによって設定されることがあるヘッダーを考慮する))もこの 関連する回答 にあります。
C#:
<script>var myip = '<%= Request.UserHostAddress %>';</script>
$.ajax({
url: '//freegeoip.net/json/',
type: 'POST',
dataType: 'jsonp',
success: function(location) {
alert(location.ip);
}
});
これもhttpsで動作します
より信頼できるREST=エンドポイントは http://freegeoip.net/json/
ジオロケーションとともにIPアドレスも返します。また、クロスドメインリクエストが有効になっているため(Access-Control-Allow-Origin:*)、JSONPをコード化する必要がありません。
CORSの問題に直面した場合は、 https://api.ipify.org/ を使用できます。
function httpGet(theUrl)
{
var xmlHttp = new XMLHttpRequest();
xmlHttp.open( "GET", theUrl, false );
xmlHttp.send( null );
return xmlHttp.responseText;
}
publicIp = httpGet("https://api.ipify.org/");
alert("Public IP: " + publicIp);
同期HTTP呼び出しを使用するのは得策ではないことに同意します。その後、非同期ajax呼び出しを使用できます。
<script type="application/javascript">
function getip(json){
alert(json.ip); // alerts the ip address
}
</script>
<script type="application/javascript" src="http://jsonip.appspot.com/?callback=getip"></script>
これにより、クライアント情報もプルバックされます。
var get = function(u){
var x = new XMLHttpRequest;
x.open('GET', u, false);
x.send();
return x.responseText;
}
JSON.parse(get('http://ifconfig.me/all.json'))
HTMLでスクリプトをインポートすると...
_<script type="text/javascript" src="//stier.linuxfaq.org/ip.php"></script>
_
その後、ページ上の任意の場所で変数userIP(訪問者のIPアドレス)を使用できます。
リダイレクトするには:<script>if (userIP == "555.555.555.55") {window.location.replace("http://192.168.1.3/flex-start/examples/navbar-fixed-top/");}</script>
または、ページに表示するには:document.write (userIP);
免責事項:私は、インポートするように言ったスクリプトの著者です。スクリプトは、PHPを使用してIPを作成します。スクリプトのソースコードは次のとおりです。
<?php //Gets the IP address $ip = getenv("REMOTE_ADDR") ; Echo "var userIP = '" . $ip . "';"; ?>