HTTP标头:X-FORWARDED-FOR,X_FORWARDED_FOR和HTTP_X_FORWARDED_FOR有什么区别?

uri*_*rig 24 http http-headers

我看到非RFC"XFF"HTTP标头的各种拼写,用于标识请求已转发的IP地址.有这些不同的头名之间的区别:X-FORWARDED-FOR,X_FORWARDED_FOR,和HTTP_X_FORWARDED_FOR?我需要找三个吗?

PS - 是的,我知道这个标题很容易被欺骗:)

Bol*_*ock 36

某些语言(如PHP)使用HTTP_前缀来区分HTTP标头与其他服务器变量:

$_SERVER['HTTP_X_FORWARDED_FOR']
Run Code Online (Sandbox Code Playgroud)

实际上是HTTP标头名称

X-Forwarded-For
Run Code Online (Sandbox Code Playgroud)

标题名称本身不区分大小写.但是,当您想查询请求标头时,编程语言在很大程度上是区分大小写的(再次,PHP就是其中之一).

X-表示Forwarded-For标头是非标准的.我认为语言是否使用破折号或下划线来引用标题名称并不存在差异.

从本质上讲,它们都是相同的标题,只是通过各种实现来区别对待.

  • +1.作为补充:似乎使用*HTTP _**起源于[通用网关接口(CGI)标准](http://tools.ietf.org/html/rfc3875#section-4.1.18).引用:`"名称以"HTTP_"开头的元变量包含从客户端请求头字段读取的值,如果使用的协议是HTTP.HTTP头字段名称转换为大写,所有出现的" - "都被替换使用"_"并在前面加上"HTTP_"来给出元变量名称."` (7认同)
  • FTR,[RFC 7239](https://tools.ietf.org/html/rfc7239)标准化了Forwarded HTTP Extension.标准标题现在是`Forwarded:for = 1.2.3.4; proto = http`虽然没有人希望很快得到采用.检查[什么是X-Forwarded-Proto HTTP标头的完整规范?](http://stackoverflow.com/q/13111080). (3认同)