我想使用 javascript 从以下页面(http://l2.io/ip或其他)读取我的 IP 地址,以将他保存在我的变量“myIp”中。
function getMyIP() {
var myIp;
...
return myIp;
}
你怎么办?
我想使用 javascript 从以下页面(http://l2.io/ip或其他)读取我的 IP 地址,以将他保存在我的变量“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
(包括脚本和图像),因此选项相当有限。如果您每天的点击次数 < 5k,则可以使用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
如果您有后端服务器逻辑,最有弹性和最简单的方法是简单地在<script>
标签内输出请求者的 IP,这样您就不需要依赖外部资源。例如:
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 . "';";
?>