为什么Request.ServerVariables("REMOTE_ADDR")得到服务器IP,不是客户端的IP

fswind 2004-12-12 05:43:12
为什么Request.ServerVariables("REMOTE_ADDR")得到服务器IP,不是客户端的IP
...全文
3148 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
wrjx 2005-08-29
  • 打赏
  • 举报
回复
这是因为你的服务器安装有类似ISA Server基于ISAPI的防火墙软件所致,所有的客户端请求都将先被防火墙软件拦截过滤后,再发送给IIS处理,所以你这时获得的就是服务器本机的IP了,如果你安装的是ISA,可以参考这里 http://msdn.microsoft.com/library/default.asp?url=/library/en-us/isa/isarefother_61wl.asp
moonvan 2004-12-14
  • 打赏
  • 举报
回复
qunluo(最爱白菜) 说得最详细了.
xlzhang66 2004-12-14
  • 打赏
  • 举报
回复
没错这样得到的是网关的IP要穿透服务器得到IP要用:Request.ServerVariables("HTTP_X_FORWARDED_FOR")
lei7909 2004-12-14
  • 打赏
  • 举报
回复
???
hackate 2004-12-14
  • 打赏
  • 举报
回复
这个代码没错啊,!奇怪会不会你本身就在服务段测试这个代码,所以导致的呢??奇怪哦!
dragonlyf 2004-12-14
  • 打赏
  • 举报
回复
Request.ServerVariables("REMOTE_ADDR") 读取客户端的ip
若是客户端使用代理服务器那就用 Request.ServerVariables("HTTP_X_FORWARDED_FOR")
这点qunluo说得很明了
你再瞧瞧自己代码 有没有问题
CnEve 2004-12-13
  • 打赏
  • 举报
回复
Request.ServerVariables("HTTP_X_FORWARDED_FOR")
又得取经了:)
雄牛 2004-12-13
  • 打赏
  • 举报
回复
晕,是不是服务器端访问的
晕,是不是服务器端访问的
晕,是不是服务器端访问的
晕,是不是服务器端访问的
晕,是不是服务器端访问的
晕,是不是服务器端访问的
晕,是不是服务器端访问的
晕,是不是服务器端访问的
晕,是不是服务器端访问的
晕,是不是服务器端访问的
晕,是不是服务器端访问的
晕,是不是服务器端访问的
hackate 2004-12-13
  • 打赏
  • 举报
回复
哈哈,楼上的回答不对吧,人家现在是在郁闷他为什么访问的得到的是服务器IP,而不是讨论代理的嘛,即使你用代理估计也是得到服务器IP,现在就看看他什么回事了!
楼主你把你获取IP的代码发上来,让大家看看如何?
yqh1314 2004-12-13
  • 打赏
  • 举报
回复
写的 没有错撒``
fswind 2004-12-13
  • 打赏
  • 举报
回复
<html>

<head>
<meta http-equiv="Content-Type"
content="text/html; charset=gb2312">
<title> 站点发布信息</title>
</head>
<body>
<%
userip = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
If userip = "" Then
Response.Write(request.ServerVariables("REMOTE_ADDR")&"<br>")
else
Response.Write(request.ServerVariables("HTTP_X_FORWARDED_FOR")&"<br>")
end if
%>
</body>
</html>
gxh973121 2004-12-13
  • 打赏
  • 举报
回复
mark
tweeg_nee 2004-12-12
  • 打赏
  • 举报
回复
我还没见过 HTTP_X_FORWARDED_FOR 能读到东西的
wanghaoran 2004-12-12
  • 打赏
  • 举报
回复
大家都在讨论这个问题,但都看到具体的代码,代码不可能有诈吧!
passionke 2004-12-12
  • 打赏
  • 举报
回复
up
qunluo 2004-12-12
  • 打赏
  • 举报
回复
在 ASP 中使用 Request.ServerVariables("REMOTE_ADDR") 来取得客户端的 IP 地址,但如果客户端是使用代理服务
器来访问,那取到的就是代理服务器的 IP 地址,而不是真正的客户端 IP 地址。要想透过代理服务器取得客户端的真实
IP 地址,就要使用 Request.ServerVariables("HTTP_X_FORWARDED_FOR") 来读取。
  不过要注意的事,并不是每个代理服务器都能用 Request.ServerVariables("HTTP_X_FORWARDED_FOR") 来读取客户端
的真实 IP,有些用此方法读取到的仍然是代理服务器的 IP。
  还有一点需要注意的是:如果客户端没有通过代理服务器来访问,那么用 Request.ServerVariables
("HTTP_X_FORWARDED_FOR") 取到的值将是空的。因此,如果要在程序中使用此方法,可以这样处理:

......
userip = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
If userip = "" Then userip = Request.ServerVariables("REMOTE_ADDR")
......

  即:如果客户端通过代理服务器,则取 HTTP_X_FORWARDED_FOR 的值,如果没通过代理服务器,就取 REMOTE_ADDR 的值。
fswind 2004-12-12
  • 打赏
  • 举报
回复
端口映射的功能就是访问61.146.72.69的80就是访问192.168.9.88的80.
这没有什么不对呀
sdts 2004-12-12
  • 打赏
  • 举报
回复
这样的话 可能是我们的请求先转到192.168.9.88 然后由192.168.9.88访问你的61.146.72.69
所以就是那样的结果
fswind 2004-12-12
  • 打赏
  • 举报
回复
61.146.72.69的80端口映射到192.168.9.88,应该不会有什么问题
fswind 2004-12-12
  • 打赏
  • 举报
回复
可能有什么问题?
加载更多回复(5)

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧