经过代理后应该跳过哪些HTTP头?

3
我有一个PHP代理程序,它接收HTTP请求并更改其中一个HTTP请求的头文件。一旦HTTP请求离开代理,大多数标头应该从原始请求(由代理接收的请求)一起传播,并且包括请求的正文。
以下是我在代码中进行传播的方式:
foreach (getallheaders() as $name => $value) {
        if (($name != "Server") || ($name != "Connection") ||
                ($name != "Host") || ($name != "Cache-Control") ||
                ($header != "Content-Length")) {
            array_push($headers, "$name: $value");
        }
    }
//this is where I set the headers of the new request
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

我有一个问题:我是否已经涵盖了所有不应在新请求中传播的标头?如果没有,哪些标头不应该传播?
提前致谢。
1个回答

2
根据RFC 2616
以下HTTP/1.1标头是逐跳标头:
- Connection - Keep-Alive - Proxy-Authenticate - Proxy-Authorization - TE - Trailers - Transfer-Encoding - Upgrade HTTP/1.1定义的所有其他标头都是端到端标头。
因此,您代码中跳过的标头列表似乎与建议的列表显着不同。例如,ServerHostCache-ControlContent-Length都不适合删除。
此外,请记住代理可以是透明或非透明的,这取决于设计。根据这个,您可能需要考虑尽可能保留许多标头。

非常感谢您,Stan。我一开始就应该查看RFC2616的。 - Constantin Levodeanschi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接