応答から特定のコンテンツを取り除く ISAPI フィルターに取り組んでいます。処理を行う前に、応答の本文をすべて収集する必要があります。これは、削除するコンテンツが送信バッファーとオーバーラップする可能性があるためです。
これを行うにはSF_NOTIFY_SEND_RAW_DATA
、最後の通知に到達するまで各通知で応答コンテンツをバッファリングしてから、翻訳されたデータを送信します。SF_NOTIFY_SEND_RAW_DATA
どちらが実際に最後かを判断する最良の方法を知りたいです。通知を待つとSF_NOTIFY_END_OF_REQUEST
、バッファリングしたデータを送信する方法がわかりません。
1 つのアプローチは、コンテンツの長さを使用することです。これには、ヘッダーの終わりを検出する必要があります。content-length ヘッダーが正しいと仮定する必要もあります (それは保証されていますか?)。HTTP は content-length ヘッダーさえも必要としないため、それが常に存在するかどうかさえわかりません。もっと簡単な方法があるはずです。
応答がチャンクされていないと想定しているため、応答を変更する前にデチャンクを処理していません。また、レスポンス ボディに変更を加えても、レスポンス ボディのサイズは変更されないため、戻ってコンテンツの長さを更新する必要はありません。