瑞星卡卡安全论坛

首页 » 技术交流区 » 系统软件 » 【原创】ASP获取客户端真实IP地址
天生我才WHJ - 2007-2-14 13:04:00
我们可以利用 Request.ServerVariables("REMOTE_ADDR") 来取得客户端的 IP 地址,假如网站的主页是index.asp,我们可以在它的HTML里加上这样一段代码:
<html>
<head>
<title>欢迎访问本网站</title>
</head>
<body>
……………………
……………………
……………………
<% Ip_address=Request.ServerVariables ("REMOTE_ADDR")      '获得客户端的ip地址
    Response Ip_address      '显示客户端的ip地址,调试程序时用用而已,真正用的时候不应该让用户看到
%>
……………………
……………………
……………………
</body>
</html>

正常情况这样就能取得客户端的IP地址,但如果客户端是使用代理服务器来访问,那取到的就是代理服务器的 IP 地址,而不是真正的客户端 IP 地址,要想透过代理服务器取得客户端的真实  IP 地址,就要使用微软公司在一般ASP技术文档中并未公布的Request.ServerVariables("HTTP_X_FORWARDED_FOR") 来读取,但是需要注意的是:如果客户端没有通过代理服务器来访问,那么用 Request.ServerVariables ("HTTP_X_FORWARDED_FOR") 取到的值将是空的。因此,如果要在程序中使用此方法,可以这样处理:
<html>
<head>
<title>欢迎访问本网站</title>
</head>
<body>
……………………
……………………
……………………
<% Ip_address=Request.ServerVariables ("HTTP_X_FORWARDED_FOR")
    If Ip_address=""      Then
          Ip_address= Request.ServerVariables ("REMOTE_ADDR")
……………………
……………………
……………………
</body>
</html>
即:如果客户端通过代理服务器,则取 HTTP_X_FORWARDED_FOR 的值,如果没通过代理服务器,就取 REMOTE_ADDR 的值。

通过这种办法,我们就能获得客户端真实的IP地址了
1
查看完整版本: 【原创】ASP获取客户端真实IP地址