HTTP_CLIENT_IP 和 HTTP_X_FORWARDED_FOR 有啥区别?

Posted

技术标签:

【中文标题】HTTP_CLIENT_IP 和 HTTP_X_FORWARDED_FOR 有啥区别?【英文标题】:What is the difference between HTTP_CLIENT_IP and HTTP_X_FORWARDED_FOR?HTTP_CLIENT_IP 和 HTTP_X_FORWARDED_FOR 有什么区别? 【发布时间】:2011-11-18 17:22:07 【问题描述】:

我了解标头HTTP_X_FORWARDED_FOR 由代理服务器设置,以识别通过代理发出HTTP 请求的主机的IP 地址。我听说标题 HTTP_CLIENT_IP 是出于类似目的而设置的。

    HTTP_CLIENT_IPHTTP_X_FORWARDED_FOR 有什么区别? 为什么一个值会与另一个值不同? 在哪里可以找到有关这些标头的确切定义的资源。

【问题讨论】:

【参考方案1】:

这些标头都没有正式标准化。因此:

    What is the difference between HTTP_CLIENT_IP and HTTP_X_FORWARDED_FOR? - 不可能说。不同的代理可以实现这些,也可以不实现。实现可能会因一个代理而异,也可能不会。缺乏标准会产生问号。 Why would one have different values than the other? - 见第 1 点。但是,从纯粹实用的角度来看,我可以看到这些具有不同值的唯一原因是如果涉及多个代理 - X-Forwarded-For: 标头可能包含完整的跟踪转发链,而 Client-IP: 标头将包含实际的客户端 IP。不过,这纯属猜测。 Where can I find resources on the exact definition of these headers. - 你不能。见第 1 点。

似乎确实有some kind of de-facto standard 与X-Forwarded-For: 标头有关,但鉴于没有定义它的RFC,这不能依赖请参阅下面的评论。

附带说明,Client-IP: 标头按照惯例应为 X-Client-IP:,因为它是“用户定义”标头。

【讨论】:

它现在似乎有一个 RFC:tools.ietf.org/html/draft-petersson-forwarded-for-02。虽然它似乎仍在草稿中。 RFC 7239 已不再是一个草案:tools.ietf.org/html/rfc7239 似乎是取代 X-Forwarded-ForX-Client-IP 的未来标准。 有用 1) ***.com/questions/6914457/… 2) IIS7/8:登录真实客户端IP IIS 命中日志 blogs.iis.net/deanc/… 3) 高级日志记录 iis.net/downloads/microsoft/advanced-logging 4) loadbalancer.org/blog/iis-and-x-forwarded-for-header 5) iis.net/learn/get-started/whats-new-in-iis-85/… 2014 年提出的标准在这里:tools.ietf.org/html/rfc7239

以上是关于HTTP_CLIENT_IP 和 HTTP_X_FORWARDED_FOR 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

审计4 XSS

php获取用户IP

php常用的一些代码

如何使用php获取本机IP地址

怎么使用PHP获取用户客户端真实IP的解决方案呢?

如何绕过用CDN的域名 获取真实IP地址