Ich arbeite an einem ISAPI-Filter, um bestimmte Inhalte aus den Antworten zu entfernen. Ich muss den ganzen Körper der Antwort sammeln, bevor ich die Verarbeitung mache, da der Inhalt, den ich entferne, Sendepuffer überlappen könnte.Ermitteln der Antwortlänge von einem ISAPI-Filter
Um dies zu tun, möchte ich den Inhalt der Antwort mit jeder SF_NOTIFY_SEND_RAW_DATA
Benachrichtigung Puffer bis ich zur letzten bin, dann senden Sie die übersetzten Daten. Ich würde gerne wissen, der beste Weg zu bestimmen, welche SF_NOTIFY_SEND_RAW_DATA
ist eigentlich die letzte. Wenn ich bis zur SF_NOTIFY_END_OF_REQUEST
Benachrichtigung warte, dann weiß ich nicht, wie ich die Daten senden soll, die ich gepuffert habe.
Ein Ansatz wäre, die Inhaltslänge zu verwenden. Dazu müsste ich das Ende der Header erkennen. Es würde auch voraussetzen, dass der Content-Length-Header korrekt ist (ist das garantiert?). Da HTTP nicht einmal einen Header für die Inhaltslänge benötigt, bin ich mir nicht einmal sicher, dass es immer da sein wird. Es scheint, als sollte es einen einfacheren Weg geben.
Ich nehme an, die Antwort ist nicht chunked, so dass ich nicht mit Dechunking handle, bevor ich die Antwort ändern. Wenn ich die Änderungen am Antworthauptteil vornehme, ändert sich auch die Größe des Antworthauptteils nicht, so dass ich nicht zurückgehen und die Inhaltslänge aktualisieren muss.