次のページ ( http://l2.io/ipまたはその他)から私の IP アドレスを読み取り、javascript を使用して変数 "myIp" に保存したいと思います。
function getMyIP() {
var myIp;
...
return myIp;
}
どうすればできますか?
次のページ ( http://l2.io/ipまたはその他)から私の IP アドレスを読み取り、javascript を使用して変数 "myIp" に保存したいと思います。
function getMyIP() {
var myIp;
...
return myIp;
}
どうすればできますか?
リンクされたサイトを確認すると?var=desiredVarName
、IP アドレスを含むグローバル変数として設定されるパラメーターを渡すスクリプト タグを含めることができます。
<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 呼び出しを使用できます。
これにより、クライアント情報も引き戻されます。
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'))