我需要以某种方式检索客户端的IP地址使用JavaScript;没有服务器端代码,甚至没有SSI。

然而,我并不反对使用免费的第三方脚本/服务。


当前回答

我会说乍得和马耳他有很好的答案。然而,他们的想法很复杂。所以我建议这个代码,我发现从广告国家插件

<script>
<script language="javascript" src="http://j.maxmind.com/app/geoip.js"></script>
<script language="javascript">
mmjsCountryCode = geoip_country_code();
mmjsCountryName = geoip_country_name();

</script>

没有ajax。只是简单的javascript。: D

如果你访问http://j.maxmind.com/app/geoip.js,你会看到它包含

function geoip_country_code() { return 'ID'; }
function geoip_country_name() { return 'Indonesia'; }
function geoip_city()         { return 'Jakarta'; }
function geoip_region()       { return '04'; }
function geoip_region_name()  { return 'Jakarta Raya'; }
function geoip_latitude()     { return '-6.1744'; }
function geoip_longitude()    { return '106.8294'; }
function geoip_postal_code()  { return ''; }
function geoip_area_code()    { return ''; }
function geoip_metro_code()   { return ''; }

它还没有真正回答这个问题,因为

http://j.maxmind.com/app/geoip.js不包含IP(尽管我打赌它使用IP来获取国家)。

但是编写这样的PhP脚本非常容易

function visitorsIP()   { return '123.123.123.123'; }

让。打开http://yourdomain.com/yourip.php。

然后做

<script language="javascript" src="http://yourdomain.com/yourip.php"></script>

问题中特别提到不能使用第三方脚本。别无他法。Javascript无法知道你的IP。但是其他可以通过javascript访问的服务器也可以毫无问题地工作。

其他回答

在你的页面中包含以下代码:<script type="text/javascript" src="http://l2.io/ip.js"></script>

点击这里了解更多

您可以使用我的服务http://ipinfo.io,它将为您提供客户端IP、主机名、地理位置信息和网络所有者。下面是一个记录IP的简单示例:

$.get("http://ipinfo.io", function(response) {
    console.log(response.ip);
}, "jsonp");

下面是一个更详细的JSFiddle示例,它还输出了完整的响应信息,因此您可以看到所有可用的详细信息:http://jsfiddle.net/zK5FN/2/

如果你在某个地方使用NGINX,你可以添加这个片段并通过任何AJAX工具询问你自己的服务器。

location /get_ip {
    default_type text/plain;
    return 200 $remote_addr;
}

你可以使用userinfo。IO javascript库。

<script type="text/javascript" src="userinfo.0.0.1.min.js"></script>

UserInfo.getInfo(function(data) {
  alert(data.ip_address);
}, function(err) {
  // Do something with the error
});

您还可以使用requirejs来加载脚本。

它将为您提供访问者的IP地址,以及有关其位置的一些数据(国家、城市等)。它基于maxmind geoip数据库。

声明:这个库是我写的

用Java脚本查找IP

为了获得IP地址,我正在对免费Web服务进行JSON调用。就像

[jsonip.com/json, ipinfo。Io /json, www.telize.com/geoip, ip-api.com/json, api.hostip.info/get_json.php]

并且我正在传递回调函数的名称,它将在请求完成时被调用。

<script type="text/javascript">
    window.onload = function () {
    var webService = "http://www.telize.com/geoip";
        var script = document.createElement("script");
        script.type = "text/javascript";
        script.src = webService+"?callback=MyIP";
        document.getElementsByTagName("head")[0].appendChild(script);
    };
    function MyIP(response) {
        document.getElementById("ipaddress").innerHTML = "Your IP Address is " + response.ip;
    }
</script>
<body>
    <form>
        <span id = "ipaddress"></span>
    </form>
</body>

对于XML响应代码

WebRTC不需要服务器支持。