2

HTTP リクエストを受信し、HTTP リクエストのヘッダーの 1 つを変更する PHP プロキシがあります。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);

私の質問:新しいリクエストで伝播されるべきではないすべてのヘッダーをカバーしましたか? そうでない場合、どのヘッダーを伝播しないでください?

前もって感謝します。

4

1 に答える 1

1

RFC 2616によると、

次の HTTP/1.1 ヘッダーはホップバイホップ ヘッダーです。

- 繋がり
- 生き続ける
- プロキシ認証
- 代理承認
- テ
- 予告編
- 転送エンコーディング
- アップグレード

HTTP/1.1 で定義されている他のすべてのヘッダーは、エンド ツー エンド ヘッダーです。

したがって、コード内のスキップされたヘッダーのリストは、提案されたリストとは大きく異なるように見えます。たとえば、 もServerHostも もも削除するのは適切ではないようですCache-ControlContent-Length

また、プロキシは設計上、透過的または非透過的である可能性があることに注意してください。これに応じて、できるだけ多くのヘッダーを保持することを検討できます。

于 2012-11-12T12:30:38.307 に答える