0

次の http リクエストを Google に送信したところ、不正なリクエスト ページが返されました。私の要求に何か問題がありましたか? C++ でプロキシ サーバーを実装していました。クライアントのリクエストを、接続したいサーバーにリダイレクトしました。リダイレクトする前に、リクエストに「\r\nConnection: close」を挿入しました。挿入する位置が間違っていませんか?ありがとう。(「@@@」を使用してリクエストを囲みます)

@@@GET http://www.google.com.tw/ HTTP/1.1
Host: www.google.com.tw
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:11.0) Gecko/20100101 Firefox/11.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-tw,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Proxy-Connection: keep-alive
Connection: close
Cookie:***

@@@
4

1 に答える 1

0

そこにあるものは仕様ごとに正しくありませんが、一部のサーバーが実際にそれに応答したとしても驚かないでしょう(ただし、Googleのものではありません)。

  • Proxy-Connection は誤称であり、まったく必要ありません。

  • GET 要求は、絶対パスではなく相対パスを提供する必要があります。明確にするために、クライアントはGETヘッダーで完全なアドレスを送信する必要がありますが、プロキシはそれを抽出して、GETがパスを運び、ホストヘッダーがホスト名を運ぶように書き換える必要があります。

いくつかの簡単な実験を試すには、単純telnet google.com 80にリクエストをコピーして貼り付け、その後にいくつかの CRLF を続けます。

于 2012-03-28T07:16:55.150 に答える