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



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

如果是这样,是对相同的数据包进行更改,还是使用修改的内容创建新的请求数据包?

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

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


当然,这取决于代理软件及其配置,但HTTP代理遵循W3CWeb内容转换代理指南,其中陈述了许多内容,但最相关:

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

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

  • 除了 RFC 2616 要求的修改之外,HTTP 代理不应修改除 User-AgentAcceptAccept-CharsetAccept-EncodingAccept-Language 标头字段以外的标头字段的值,并且不得删除标头字段。

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

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


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

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

最新更新