Я хотел бы прочитать свой ip-адрес со следующей страницы (http://l2.io/ip или другой) с помощью javascript, чтобы сохранить его в моей переменной "MyIP".
function getMyIP() {
var myIp;
...
return myIp;
}
Как вы можете сделать?
Я хотел бы прочитать свой ip-адрес со следующей страницы (http://l2.io/ip или другой) с помощью javascript, чтобы сохранить его в моей переменной "MyIP".
function getMyIP() {
var myIp;
...
return myIp;
}
Как вы можете сделать?
Проверяя связанный сайт , вы можете включить тег script, передающий параметр ?var=desiredVarName
, который будет установлен как глобальная переменная содержащий IP-адрес:
<script type="text/javascript" src="http://l2.io/ip.js?var=myip"></script>
<!-- ^^^^ -->
<script>alert(myip);</script>
Я считаю, что мне не нужно говорить, что это может быть легко подделано (через использование прокси или поддельных заголовков запросов), но это стоит отметить в любом случае.
В случае, если ваша страница обслуживается с использованием протокола https
, большинство браузеров будут блокировать контент на той же странице, который будет обслуживаться с использованием протокола http
(включая скрипты и изображения), поэтому параметры довольно ограничены. Если у вас есть < 5k hits/day, можно использовать 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 (учитывающее заголовки, которые иногда задаются прокси).
С#:
<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.
<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>
Если вы столкнулись с проблемой 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-вызова не является хорошей идеей. Вы можете использовать асинхронный вызов async then.
Это также отбрасывает информацию о клиенте.
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...
<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);
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я являюсь автором script, который я сказал для импорта. script использует IP-адрес с помощью PHP. Исходный код script ниже.
<?php
//Gets the IP address
$ip = getenv("REMOTE_ADDR") ;
Echo "var userIP = '" . $ip . "';";
?>