HTTP代理服务器是否修改请求数据包?

Ash*_*win 16 http httprequest http-proxy http-headers

是否在代理服务器转发到服务器之前,是否向HTTP请求添加或修改了任何请求标头?

如果是,是对相同的数据包进行了更改,还是用于创建带有修改的新请求数据包的内容?

Xen*_*non 29

有几种不同类型的代理服务器.因为您已经提到了请求标头,我将假设您正在谈论HTTP代理服务器,它转发HTTP请求,而不是数据包.

注意:HTTPS请求(TLS/SSL via CONNECT)的特殊情况下,代理服务器仅转发TCP数据包的内容(并且除非充当中间人代理,否则无法检查数据包).


当然,这取决于代理软件和它的配置,但HTTP代理的预期遵循W3C 的Web内容转换代理指南,其中指出很多东西,但最贴切:

  • 除了转换HEADGET代理之外,不得改变请求方法.

  • 如果请求包含Cache-Control: no-transform指令,则代理不得更改请求,除了遵守RFC 2616 HTTP部分第14.9.5节和第13.5.2节中定义的透明HTTP行为,并添加标头字段,如4.1.6其他HTTP标头中所述领域.

  • 除了由RFC 2616 HTTP代理不应该修改比其他头字段的值所需要的修改User-Agent,Accept,Accept-Charset,Accept-Encoding,和Accept-Language头字段,并且不能删除头字段.

  • 代理应将请求的发起者的IP地址添加到X-Forwarded-ForHTTP头字段中逗号分隔列表的末尾.

  • 代理必须(根据RFC 2616)包含ViaHTTP头字段.


总之,您通常可以期望这些HTTP标头由符合标准的代理更改/添加:

  • User-Agent
  • Accept
  • Accept-Charset
  • Accept-Encoding
  • Accept-Language
  • X-Forwarded-For
  • Via

  • @Ashwin:我认为您在这里误解了 HTTP 协议。HTTP 是一种应用协议,位于 [OSI 模型](http://en.wikipedia.org/wiki/OSI_model) 的 _application_ 层。所有 HTTP '数据包' 都是真正的 TCP 数据包,HTTP 不直接处理数据包(这一切都发生在 [OSI 模型](http://en.wikipedia.org/wiki/OSI_model) 的 _transport_ 和 _network_ 层上) )。 (2认同)