在代理服务器转发到服务器之前,是否向HTTP请求添加或修改了任何请求标头?
如果是这样,是对相同的数据包进行更改,还是使用修改的内容创建新的请求数据包?
有几种不同类型的代理服务器。因为您提到了请求标头,所以我假设您谈论的是HTTP代理服务器,它转发HTTP请求,而不是数据包。
注意:在HTTPS请求的特殊情况下(TLS/SSL通过CONNECT
(,代理服务器将只转发TCP数据包的内容(并且无法检查数据包,除非充当中间人代理(。
当然,这取决于代理软件及其配置,但HTTP代理应遵循W3CWeb内容转换代理指南,其中陈述了许多内容,但最相关:
-
除了在
HEAD
和GET
代理之间进行转换外,不得更改请求方法。 -
如果请求包含
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 地址添加到 HTTP 标头字段中逗号分隔列表的末尾
X-Forwarded-For
。 -
代理必须(根据 RFC 2616(包含
Via
HTTP 标头字段。
总之,您通常可以期望这些 HTTP 标头由符合标准的代理更改/添加:
-
User-Agent
-
Accept
-
Accept-Charset
-
Accept-Encoding
-
Accept-Language
-
X-Forwarded-For
-
Via