質問

特定のコンテンツを応答から取り除くISAPIフィルターに取り組んでいます。ストリッピングしているコンテンツが送信バッファーと重複する可能性があるため、処理を行う前に応答のすべてのボディを収集する必要があります。

これを行うには、最後の通知に到達するまで、各 SF_NOTIFY_SEND_RAW_DATA 通知で応答コンテンツをバッファリングし、翻訳されたデータを送信します。どの SF_NOTIFY_SEND_RAW_DATA が実際に最後であるかを判断する最良の方法を知りたいです。 SF_NOTIFY_END_OF_REQUEST 通知まで待つと、バッファリングしたデータの送信方法がわかりません。

1つのアプローチは、content-lengthを使用することです。これには、ヘッダーの終わりを検出する必要があります。また、content-lengthヘッダーが正しいと仮定する必要があります(保証されていますか?)。 HTTPはcontent-lengthヘッダーさえ必要としないので、常にそこにあるかどうかさえわかりません。もっと簡単な方法があるはずです。

応答がチャンク化されていないと想定しているため、応答の変更を行う前にデチャンク化を処理していません。また、応答本文に変更を加えても、応答本文のサイズは変わらないため、戻ってcontent-lengthを更新する必要はありません。

役に立ちましたか?
scroll top