【问题标题】:using javascript to determine ip works in chrome not firefox or ie使用 javascript 来确定 ip 在 chrome 中工作而不是 firefox 或 ie
【发布时间】:2011-09-28 20:02:00
【问题描述】:

我正在使用 javascript 来确定访问者的 IP 地址。无论出于何种原因,它都适用于 Chrome,而不适用于 Firefox、IE 或其他浏览器。

这是我的代码:

function getIPAddress() {
    var xmlHttp;

    if (window.XMLHttpRequest) {
        xmlHttp = new XMLHttpRequest();
    } else {
        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    }

    xmlHttp.open("GET", "http://api.hostip.info/get_html.php", false);
    xmlHttp.send();

    var hostipInfo = xmlHttp.responseText.split("\n");

    for (var i = 0; i < hostipInfo.length - 1; i++) {
        var ipAddress = hostipInfo[i].split(":");
        if (ipAddress[0] == "IP") return ipAddress[1];
    }

    return "unknown";
}

在我工作的公司,我是一名代理人。这可能是代理问题,还是此代码有问题?谢谢。

刚刚将我的代码部署到我们的测试环境中,在 IE 中,我收到一个弹出窗口,提示“此页面正在访问不受其控制的信息。这会带来安全风险。你想继续吗?'如果我说,是的,它有效。如果我说,不,它不会。

【问题讨论】:

  • 您尝试过 POST 方法吗?可能是缓存问题。
  • 两件事:如果它在来自“hostip.info”以外的域的页面中运行,由于基本的浏览器安全规则,它将无法工作,并且(2)你不需要等待ajax 请求无论如何都要完成。

标签: javascript ip


【解决方案1】:

如果您要使用 AJAX(这就是这段代码),我强烈建议您使用 jQuery 之类的第 3 方包装器。这将大大提高跨浏览器的兼容性,并允许您将代码缩减到这样的程度。

$.post('http://api.hostip.info/get_html.php', function(data){
    alert(data);
});

加分项

正如Pointy 提到的,如果您的页面在与hostip.info 不同的域上运行,您将需要设置一个本地 PHP 来获取这样的数据..

localGetData.php

die(file_get_contents('http://api.hostip.info/get_html.php'));

新的 Ajax

$.post('localGetData.php', function(data){
    alert(data);
});

【讨论】:

  • 您能否举一个设置本地从 asp.net 获取数据的示例。我没有使用 PHP,也不知道等效项。
  • 我对 ASP.NET 不是特别熟悉,所以我实在是想不通。也许这个链接就足够了? wiki.asp.net/page.aspx/285/httpwebrequest/rev/4
  • 刚刚意识到我可以使用 Request.UserHostAddress 从服务器端获取 ip。目前,获取本地机器的地址,但我认为这是因为我的计算机和服务器都在同一个网络内。
【解决方案2】:

如果hostipInfo 只有一个元素,for (var i = 0; i &lt; hostipInfo.length - 1; i++) { 将导致返回“未知”,请更改为for (var i = 0; i &lt; hostipInfo.length; i++) {

【讨论】:

    【解决方案3】:

    这在 Chrome 中起作用的原因是因为它支持 CORS,允许您跨域发出此请求。

    由于该网站似乎不支持

    【讨论】:

      猜你喜欢
      • 2016-02-05
      • 2015-07-10
      • 2010-09-21
      • 1970-01-01
      • 2015-10-18
      • 1970-01-01
      • 2015-07-11
      • 2015-02-28
      • 1970-01-01
      相关资源
      最近更新 更多