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

时间:2012-04-29 04:28:08

标签: http http-headers httprequest http-proxy

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

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

1 个答案:

答案 0 :(得分:29)

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

注意:HTTPS requests的特殊情况下(TLS / SSL通过CONNECT),代理服务器转发内容TCP数据包(除非作为man-in-the-middle代理服务器,否则无法检查数据包)。


当然这取决于代理软件及其配置,但HTTP代理预期遵循W3C Guidelines for Web Content Transformation Proxies ,其中陈述了许多内容,但最相关的:

  • 除了在HEADGET代理之间进行转换外,不得更改请求方法。

  • 如果请求包含Cache-Control: no-transform指令,代理不得更改请求,除了遵守RFC 2616 HTTP部分第14.9.5节和第13.5.2节中定义的透明HTTP行为并添加标题字段,如4.1.6 Additional HTTP Header Fields

  • 中所述
  • 除了RFC 2616所需的修改之外,HTTP代理不应修改除User-AgentAcceptAccept-CharsetAccept-Encoding以外的标题字段的值和Accept-Language标题字段,不得删除标题字段。

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

  • 代理必须(根据RFC 2616)包含Via HTTP标头字段。


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

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