如何通过HTTP_X_FORWARDED_FOR从IIS ASPX页面(How to pass HT

2019-10-17 15:29发布

我有我的网站上亚马逊的ELB运行。 我需要捕获客户端的IP地址为我们做的网站上的东西 - 这是不理想,但我们绝对需要的IP现在。

这用来在专用服务器上工作的伟大。 但自从搬到ELB,我只得到ELB的内部IP地址作为客户端的IP地址,当我使用Request.UserHostAddress

从一些博客去我加入X-Forwarded-For和即使我的IIS日志有权客户端IP,即IP不通过实际的网页..

逸岸,没有在头中没有这样的领域..或任何接近,在头。

检查Request.Headers.ToString()给了我,我的会话cookie,其他的饼干,客户端浏览器(正确地)和其他类似的东西,但没有什么任何IP。 事实上,我甚至不能看到ELB的静态IP地址。

Request.Headers["HTTP_X_FORWARDED_FOR"]始终为空,可以理解。

我如何从C#真正的客户端IP,好吗?

Answer 1:

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

我不得不使用Request.ServerVariables和寻找REMOTE_ADDR找到客户端IP。

事情是这样的:

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

这为我工作..



Answer 2:

在我的测试中,客户端IP地址是由两个下列情形之一的弹性负载均衡填充。

Request.ServerVariables["HTTP_X_FORWARDED_FOR"];

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

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

见亚马逊的弹性负载平衡开发者指南进一步的细节(搜索X -转发,对于)。



文章来源: How to pass HTTP_X_FORWARDED_FOR to aspx pages from IIS
标签: c# amazon-ec2 ip