Détermination de la longueur de la réponse à partir d'un filtre ISAPI

StackOverflow https://stackoverflow.com/questions/617579

  •  03-07-2019
  •  | 
  •  

Question

Je travaille sur un filtre ISAPI pour éliminer certains contenus des réponses. Je dois collecter tout le corps de la réponse avant de procéder au traitement, car le contenu que je supprime pourrait recouvrir les tampons d'envoi.

Pour ce faire, j'aimerais mettre le contenu de la réponse en mémoire tampon avec chaque notification SF_NOTIFY_SEND_RAW_DATA jusqu'à ce que j'atteigne la dernière, puis envoyer les données traduites. J'aimerais savoir quel est le meilleur moyen de déterminer quel SF_NOTIFY_SEND_RAW_DATA est en réalité le dernier. Si j'attends la notification SF_NOTIFY_END_OF_REQUEST , je ne sais pas comment envoyer les données que j'ai mises en mémoire tampon.

Une approche consisterait à utiliser la longueur du contenu. Cela nécessiterait que je détecte la fin des en-têtes. Cela impliquerait également de supposer que l'en-tête content-length est correct (est-ce garanti?). Étant donné que HTTP n’exige même pas d’en-tête de longueur de contenu, je ne suis même pas sûr qu’il sera toujours là. Il semble qu'il devrait y avoir un moyen plus facile.

Je suppose que la réponse n'est pas divisée en morceaux, je ne gère donc pas la désagrégation avant que je ne modifie la réponse. De plus, lorsque je modifie le corps de la réponse, la taille de ce dernier ne change pas et je n'ai donc pas besoin de revenir en arrière et de mettre à jour la longueur du contenu.

Était-ce utile?

La solution

J'ai finalement trouvé de bonnes discussions via Google.

Cet article répond à mes questions et soulève des problèmes qu'un filtre plus complexe devrait traiter:

scroll top