Domanda

Sto lavorando a un filtro ISAPI per rimuovere determinate risposte dalle risposte. Devo raccogliere tutto il corpo della risposta prima di eseguire l'elaborazione, poiché il contenuto che sto rimuovendo potrebbe sovrapporsi ai buffer di invio.

Per fare ciò, vorrei bufferizzare il contenuto della risposta con ogni SF_NOTIFY_SEND_RAW_DATA fino a quando non arrivo all'ultimo, quindi inviare i dati tradotti. Vorrei sapere il modo migliore per determinare quale SF_NOTIFY_SEND_RAW_DATA è in realtà l'ultimo. Se aspetto fino alla notifica SF_NOTIFY_END_OF_REQUEST , non so come inviare i dati memorizzati nel buffer.

Un approccio sarebbe usare la lunghezza del contenuto. Ciò richiederebbe di rilevare la fine delle intestazioni. Richiederebbe anche che l'intestazione della lunghezza del contenuto sia corretta (è garantita?). Poiché HTTP non richiede nemmeno un'intestazione di lunghezza del contenuto, non sono nemmeno sicuro che sarà sempre lì. Sembra che ci dovrebbe essere un modo più semplice.

Suppongo che la risposta non sia ridotta, quindi non sto gestendo il dechunking prima di apportare la modifica della risposta. Inoltre, quando faccio le modifiche al corpo della risposta, le dimensioni del corpo della risposta non cambieranno, quindi non ho bisogno di tornare indietro e aggiornare la lunghezza del contenuto.

È stato utile?

Soluzione

Alla fine ho trovato delle buone discussioni tramite Google.

Questo post risponde alle mie domande, oltre a sollevare problemi che un filtro più complicato dovrebbe affrontare:

scroll top