0

Browser ----> Http Proxy ----> Web server

要求について、Web サーバーが Content-Length ヘッダーを使用して応答本文として 200 バイトを送信することを示しているとします。ネットワークは 100 バイト後に切断され、最終的にプロキシから Web サーバーへのソケットで読み取りタイムアウトが発生します。

プロキシの設計上の考慮事項

  1. プロキシが 200 バイトを送信する必要があるときに、100 バイト後にブラウザとの HTTP トランザクションを閉じても問題ありませんか?

  2. Proxy と Browser 間の HTTP トランザクションを中止するよう提案した場合、どのようにそれを達成しますか?

4

2 に答える 2

0

ほとんどの場合、200 バイト全体がヘッダーの後にソケット送信バッファーに書き込まれ、送信者は何も問題が発生していることにまったく気付かずにソケットを閉じます。最悪の場合、送信者は IOException: 'connection reset' を受け取りますが、サーブレット コンテナーはこれをキャッチして無視します。

于 2013-05-01T12:01:32.967 に答える
0

サーブレットコンテナを使用している場合、コンテナはこれを例外で内部的に処理すると思います。または、HttpServletResponse/HttpServletRequest から OutputStream/InputStream を取得した場合は、ストリームからの書き込み/読み取りで IOException が発生します。

プレーン Java ソケットを使用して自分でこれを処理しようとすると、ストリームにバイトを書き込むことができないため、ストリームで IOException が発生します。

于 2013-05-01T11:35:29.667 に答える