応答ステータスがネットワーク上で送信されると、それを変更することはできません。そのため、返信を送信した場合、200 OK
後で気が変わることはありません。お気づきのように、これは応答中にエラーが発生した場合に問題を引き起こします。
私の知る限り、できることは、チャンクされた応答を送信することだけです。RFC 2616 のセクション 3.6.1 を参照してください。
チャンク エンコーディングは、メッセージの本文を変更して、一連のチャンクとして転送します。それぞれに独自のサイズ インジケーターがあり、その後にエンティティ ヘッダー フィールドを含む OPTIONAL トレーラーが続きます。これにより、動的に生成されたコンテンツを、受信者が完全なメッセージを受信したことを確認するために必要な情報とともに転送できます。
このトレーラーの目的は、エンティティ本体が送信される前に計算できないエンティティ本体に関する情報を提供することです。ただし、セクション 7.1 では、このトレーラーに任意のヘッダーを含めることができます。
拡張ヘッダー メカニズムにより、プロトコルを変更せずに追加のエンティティ ヘッダー フィールドを定義できますが、これらのフィールドを受信者が認識できると想定することはできません。認識されていないヘッダー フィールドは、受信者によって無視されるべきであり、透過的なプロキシによって転送されなければなりません (SHOULD)。
そのため、応答の途中でエラーが発生したことを知らせることはできますが、これがどのように通知されるかは、2 つの部分の間で取り決めを行う必要があります。一般に、クライアントがエラー状態を通知していると理解できると想定できる方法を使用することはできません。
ヘッダー付きのメッセージで途中で接続を終了するContent-length
ことはオプションですが、明示的に禁止されています。
メッセージ本文が許可されているメッセージで Content-Length が指定されている場合、そのフィールド値はメッセージ本文の OCTET の数と正確に一致する必要があります。HTTP/1.1 ユーザー エージェントは、無効な長さを受信して検出した場合、ユーザーに通知する必要があります。
とは言っても、サーバーは宣伝するよりも短いメッセージを送信してはなりませんが、クライアントはこのエラー状態をチェックし、そのように報告する必要があります (プロキシはこの部分的な応答をキャッシュすることさえあります)。