2013-06-20 4 views
6

チャンク転送符号化形式のクライアントに大量のデータを送信しています。チャンク転送符号化で送信された応答で、一部のデータがすでに送信された後にエラーが発生したことを示します。

応答の書き込み中にの途中でが発生した場合の対処方法を教えてください。

本当に応答が成功したものではなく、サーバーが何らかの問題に遭遇したことをクライアントが知るために、HTTP Spec推奨慣行があるかどうかを知りたいと思います。

答えて

5

HTTPヘッダーをクライアントに送信し始めると、何も送信できなくなります。送信しようとした応答、つまりチャンクされたデータと関連するヘッダーの送信を完了しなければなりません。その途中でエラーが発生した場合、そのエラーをクライアントに報告する方法はありません。接続を閉じるだけです。クライアントがすべてのヘッダーを受信しないか、応答の最後に0の長さのチャンクを受信しません。どちらの方法でも、クライアントは、送信中にサーバーでエラーが発生したことを知ることができます。

+0

ありがとうございます。ええ...そうです、ヘッダーが最初に送信され、ストリームに書き込みを開始するとヘッダーが変更されることはありません。あなたが提案したように、私は現在接続を閉じていますが、HTTP Specがクライアントにそのことを知らせる方法について他の方法があるかどうかを知りたがっています。面白い長さのチャンクは、私はその領域で何かできるかどうかを確認します。 –

+0

何か問題があったことをクライアントに知らせるには、2つの方法しかありません。最後の長さのチャンクを受信する以外の何かがエラーであるか、最後の0〜10番目のチャンクを送信した後にチャンクされたフッターにカスタムHTTPヘッダーを置くので、接続を閉じます(これは何をすべきかです)。ほとんどのクライアントはおそらくこのようなヘッダーを無視しますが、独自のクライアントを作成している場合は、そのヘッダーを探すことができます。 –

+0

確かにね!レミー... –

関連する問題