【问题标题】:What is the difference between X-Forwarded-For and X-Forwarded-IP?X-Forwarded-For 和 X-Forwarded-IP 有什么区别?
【发布时间】:2013-10-22 08:44:27
【问题描述】:

为了在我的 ASP.NET 应用程序中获取客户端 IP 地址,我使用了 X-Forwarded-For,并从列表中获取第一个 IP 地址(根据我找到的信息,有一个客户端,代理1,代理2..)。但是我最近听说最好从 X-Forwarded-IP 标头中获取这些信息,因为 X-Forwarded-For 中的客户端 IP 地址可以通过代理修改,有什么区别,我应该使用哪个地址?

【问题讨论】:

    标签: proxy http-headers


    【解决方案1】:

    X-Forwarded-For 是识别连接到来自 HTTP 代理、负载平衡器的 web 服务器的用户的原始 IP 地址的传统方法。

    X-Forwarded-IP 是识别通过 HTTP 邮件服务连接到 email 服务器的用户的原始 IP 地址的传统方式。

    【讨论】:

      【解决方案2】:

      X-Forwarded-For 是一个非标准标头,最初由 Squid 引入。它是一个特定于代理的标头,可帮助服务器识别通过代理的调用的原始请求者 - 因此显然请求路径上的任何代理都应该/将修改 X-Forwarded-For。如果请求路径上没有代理,则此标头甚至不应该在请求中。

      由于此标头是非标准的,因此无法保证您会得到它,并且它的处理方式可能因代理实现而异。您也无法保证它会包含正确的 IP。

      自 2014 年以来,IETF 已批准代理的标准标头定义,称为“Forwarded”,在此处记录 https://www.rfc-editor.org/rfc/rfc7239,应使用该标头代替 X-Forwarded 标头。如果您的请求由代理处理,您应该可靠地使用它来获取原始 IP。

      一般来说,代理标头(Forwarded 或 X-Forwarded-For)是获取您的客户端 IP 的正确方法当您确定它们通过代理到达您时。如果没有代理头或没有可用值,则应默认为 REMOTE_ADDR 服务器变量。

      【讨论】:

      猜你喜欢
      • 2022-06-12
      • 2011-04-19
      • 1970-01-01
      • 2017-09-27
      • 1970-01-01
      • 2021-01-23
      • 1970-01-01
      • 2018-10-14
      相关资源
      最近更新 更多