如何使用Javascript获取客户端的IP地址

3

你好,请告诉我如何获取客户端IP地址。我已经使用了以下方法。

Ip = <--#echo var="REMOTE_ADDR"-->;

ip = '<%= Request.UserHostAddress>';

但是这些并没有起作用。

1
你的服务器端语言是什么? - Shadow The Spring Wizard
除非您有服务器端语言,否则不可能仅使用JavaScript获取客户端IP地址(如果有服务器端语言,则可能性存在,但不会仅限于JavaScript)。 - qJake
1
你能提供一些关于你的环境的更多信息吗?这两个看起来都是经典的ASP代码片段。 - trickwallett
2
@SpikeX -- 这里的问题看起来像是在Classic ASP环境中使用JScript,这使得这个问题与使用客户端JavaScript获取用户IP的问题完全不同。 - Sean Vieira
7个回答

4

在ASP Classic中使用以下代码获取IP地址:

<%
Dim UserIPAddress
UserIPAddress = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
If UserIPAddress = "" Then
UserIPAddress = Request.ServerVariables("REMOTE_ADDR")
End If
%>

2

试试这个:

<script type="text/javascript">
    var ip = "<%=Request.ServerVariables("REMOTE_ADDR")%>";
    alert(ip);
</script>

假设这是一个.asp页面,你应该会看到弹出框显示你的ip地址。


2

大多数Web服务器(假设您正在使用IIS)在REMOTE_ADDR 环境变量中提供此信息。

您的示例尝试使用Classic ASP和Server Side Includes来获取服务器变量,这两者在现代IIS Web服务器上默认关闭。您可能需要启用经典ASP或SSI,或使用ASP.NET使用ServerVariables属性


我启用了SSI并且使用了ip = '<%= Request.UserHostAddress>',但它没有正确显示。 - sreekanth
那是经典的ASP方式——使用SSI。尝试你的第一个例子,<--#echo var="REMOTE_ADDR"--> - Nathan
第一个链接已经失效。 - Tom Burris

1

仅使用JavaScript无法完成此操作,看起来您正在尝试在客户端使用服务器端代码,这是不可行的。

最简单、最快(也是最丑陋)的方法是将IP地址在*服务器端*输出到发送给用户的页面中的脚本标记中。

我不知道您在服务器端使用的是哪种语言,因此我将为您提供一些伪代码。

echo '<script type="text/javascript">var USER_IP = ' + getRemoteAddess() + ';</script>'

这将会引入一个全局变量 USER_IP 到页面中,请确保使用该变量的代码位于上述脚本标签 之后

我想使用JavaScript警报IP地址,所以我使用了您上面的代码,但是对我来说这不起作用。 - user2163769

0

尝试

ip = '<%= Request.UserHostAddress %>';

0

如果有人正在寻找PHP解决方案,可以像这样操作:

<?php echo $_SERVER['REMOTE_ADDR']; ?>

例如,如果您要将其传递给JS数组,则应如下所示:

tr._setSomeVar(5, "Remote Address", "<?php echo $_SERVER['REMOTE_ADDR']; ?>", 9);

0

使用纯JavaScript无法获取IP。您提供的两个解决方案需要服务器端脚本。


看起来OP正在使用JScript ASP经典服务器端。 - Nathan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接