HTTP 请求头中的 X-Forwarded-For

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTTP 请求头中的 X-Forwarded-For相关的知识,希望对你有一定的参考价值。

参考技术A X-Forwarded-For请求头格式非常简单,就这样:

可以看到,XFF 的内容由「英文逗号 + 空格」隔开的多个部分组成,最开始的是离服务端最远的设备 IP,然后是每一级代理设备的 IP。

如果一个 HTTP 请求到达服务器之前,经过了三个代理 Proxy1、Proxy2、Proxy3,IP 分别为 IP1、IP2、IP3,用户真实 IP 为 IP0,那么按照 XFF 标准,服务端最终会收到以下信息:

Proxy3 直连服务器,它会给 XFF 追加 IP2,表示它是在帮 Proxy2 转发请求。列表中并没有 IP3,IP3 可以在服务端通过 remote_address 来自 TCP 连接,表示与服务端建立 TCP 连接的设备 IP,在这个例子里就是 IP3。

详细分析一下,这样的结果是经过这样的流程而形成的:

总结:

remote_address 到 xff头,如果xff头不存在,那么xff就被设置成跟$remote_address 一样了。如果本来就存在,就追加了 ip1, ip2这样的形式

问题:

HTTP请求头中的那些东西

一、HTTP请求头是什么?

  HTTP请求头,HTTP客户程序(例如浏览器),向服务器发送请求的时候必须指明请求类型(一般是GET或者POST)。如有必要,客户程序还可以选择发送其他的请求头。

二、HTTP头中都有什么?

  1、请求类型:我们常见的请求类型有Get和Post两种请求,而这个信息在HTTP请求报文中的地一行即请求中就可以得到;

  2、请求地址:请求地址告诉服务端当前请求来自哪里,例如"/"表示的是服务器根目录,对一个静态网站而言,如果存在index.html

        则指向该网页;对一个动态网站而已,如果存在index.php则它指向该网页。

  3、请求参数:客户端和服务器的通信最终是要落实到具体数据的传递上来的,所以通过请求报文我们能够获得客户端传递的参数

        并对其进行处理,通常Get类型参数在请求行、而Post类型参数在消息体中。

  4、请求约束:我们把1、2、3是通信核心要素,那么接下来这些我们可以称其为细节要素。

  5、请求报文:

        第一部分:请求类型、请求参数、请求地址;

        第二部分:请求头部,这里定义了如Accept,AcceptLanguage等字段,这是我们这里所说的请求约束。

        第三部分,消息体,它是一个可选的内容,和第二部分间有一个空行,当采用Post类型请求时这里将记录客户端传递的参数。

    待续。。。。。。

 

  

  

以上是关于HTTP 请求头中的 X-Forwarded-For的主要内容,如果未能解决你的问题,请参考以下文章

http请求头中的content-type属性

HTTP 请求头中的 X-Forwarded-For

人回答如何修改http请求头中的origin吗

HTTP 请求头中的 X-Forwarded-For

什么更安全,HTTP会话中的JWT或客户端请求头中的JWT?

如何在http请求头中添加cookie-CSDN论坛