【问题标题】:How to pass HTTP_X_FORWARDED_FOR to aspx pages from IIS如何将 HTTP_X_FORWARDED_FOR 从 IIS 传递到 aspx 页面
【发布时间】:2013-01-23 11:39:52
【问题描述】:

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

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

Going from some blogs 我添加了X-Forwarded-For,即使我的 IIS 日志具有正确的客户端 IP,该 IP 也不会传递到实际网页。..

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

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

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

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

【问题讨论】:

    标签: c# amazon-ec2 ip


    【解决方案1】:

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

    我必须使用Request.ServerVariables 并查找REMOTE_ADDR 才能找到客户端IP。

    类似这样的:

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

    这对我有用..

    【讨论】:

      【解决方案2】:

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

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

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

      更多详情请参见Amazon's Elastic Load Balancing Developer Guide(搜索 X-Forwarded-For)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多