如何将HTTP_X_FORWARDED_FOR从 IIS 传递到 aspx 页

本文关键字:IIS aspx FOR HTTP FORWARDED | 更新日期: 2023-09-27 17:55:15

我的网站在 Amazon ELB 上运行。我需要为我们在网站上做的事情捕获客户的 IP 地址 - 这并不理想,但我们现在肯定需要 IP。

这曾经在专用服务器上工作得很好。但是自从迁移到 ELB 后,当我使用Request.UserHostAddress时,我只将 ELB 的内部 IP 地址作为客户端的 IP 地址

从我添加的一些博客X-Forwarded-For,即使我的IIS日志具有正确的客户端IP,该IP也不会传递到实际的网页。

事实上,标题中没有这样的字段......或任何接近标题中的字段。

检查Request.Headers.ToString()给了我我的会话cookie,其他cookie,客户端浏览器(正确)和其他类似的东西,但没有任何IP的内容。事实上,我什至看不到易北人的静态ip。

Request.Headers["HTTP_X_FORWARDED_FOR"]总是空的,这是可以理解的。

请问如何从 C# 获取真正的客户端 IP?

如何将HTTP_X_FORWARDED_FOR从 IIS 传递到 aspx 页

几天前我做了类似的事情!

我不得不使用Request.ServerVariables并寻找REMOTE_ADDR来查找客户端 IP。

像这样:

if (Request.ServerVariables["REMOTE_ADDR"] != null)
{
    string userIP = Request.ServerVariables["REMOTE_ADDR"]; 
}

这对我有用..

在我的测试中,在以下两种情况下,客户端 IP 地址都由弹性负载均衡器填充。

Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
Request.Headers["X-Forwarded-For"];

请注意,这些变量的格式不一定只是客户端 IP 地址。如果多次转发请求,则服务器 IP 地址将附加逗号和空格作为分隔符。

有关更多详细信息,请参阅 Amazon 的 Elastic Load Balancing 开发人员指南(搜索 X-Forwarded-For)。