HTTP_CLIENT_IP 和 HTTP_X_FORWARDED_FOR 有什么区别?

我知道代理服务器设置了一个头 HTTP_X_FORWARDED_FOR来标识通过代理发出 HTTP 请求的主机的 ip 地址。我听说头 HTTP_CLIENT_IP是为了类似的目的而设置的。

  1. HTTP_CLIENT_IPHTTP_X_FORWARDED_FOR有什么不同?
  2. 为什么一个有不同的价值观呢?
  3. 在哪里可以找到关于这些头的确切定义的资源。
98727 次浏览

这两个标题都没有正式标准化,因此:

  1. 这是不可能说的。不同的代理可以实现这些,也可以不实现。实现可能因代理的不同而不同,也可能不同。缺乏标准会产生问号。
  2. Why would one have different values than the other?-见第1点。然而,从一个纯粹实际的角度来看,我能看到这些具有不同值的唯一原因是,如果涉及到多个代理——那么 X-Forwarded-For:头可能包含转发链的完整轨迹,而 Client-IP:头将包含实际的客户端 IP。然而,这纯属猜测。
  3. 你不能,看第一点。

似乎有关于 X-Forwarded-For:头的 某种事实上的标准,但是 鉴于没有 RFC 定义它,这是不可靠的见下面的注释。

顺便说一句,按照惯例,Client-IP:头应该是 X-Client-IP:,因为它是一个“用户定义的”头。