当前位置:  开发笔记 > 编程语言 > 正文

为什么ServerVariable ["REMOTE_ADDR"]返回服务器IP?

如何解决《为什么ServerVariable["REMOTE_ADDR"]返回服务器IP?》经验,为你挑选了1个好方法。

我有以下代码:

string ip = Request.ServerVariables["REMOTE_ADDR"];

其中,在测试环境中确实返回用户IP地址,但是当我们将网站部署到生产环境时,此变量具有托管应用程序的服务器的IP.有帮助吗?



1> zeroef..:

我的猜测是中间有一个代理.HTTP_X_FORWARDED_FOR首先使用,如果为null,则使用REMOTE_ADDR

来自MSDN文章:

虽然只检索REMOTE_ADDR服务器变量应该足够了,但是我发现在线资源表明这样的代码也应该检查HTTP_X_FORWARDED_FOR变量; 如果请求来自翻译地址的代理服务器,则此变量包含正确的地址.如果请求不存在的服务器变量,则ServerVariables属性将返回空字符串.因此,即使我的测试中没有出现此属性,尝试检索其值也不会造成麻烦.

更新:

如果它是您已更改设置的负载均衡器,您应该询问他们是否可以通过原始IP.我知道这可以通过Microsoft的ISA服务器完成.

如果这不是一个选项,那么您可以尝试这些其他服务器变量,看看它们是否产生结果:

"HTTP_X_COMING_FROM"
"HTTP_X_FORWARDED_FOR"
"HTTP_X_FORWARDED"
"HTTP_X_REAL_IP"
"HTTP_VIA"
"HTTP_COMING_FROM"
"HTTP_FORWARDED_FOR"
"HTTP_FORWARDED"
"HTTP_FROM"
"HTTP_PROXY_CONNECTION"
"CLIENT_IP"
"FORWARDED"

推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有