2010-07-05 7 views
0

Je travaille avec une application client/serveur qui utilise HTTP, et mon but est d'y ajouter de nouvelles fonctionnalités. Je peux étendre le client en accrochant mon propre code à certains événements spécifiques, mais malheureusement le serveur n'est pas personnalisable. Le client et le serveur sont dans un environnement Windows.Comment intercepter et modifier les réponses HTTP côté serveur?

Mon problème actuel est que les performances sont terribles quand beaucoup de données sont reçues du serveur: il faut du temps pour les transmettre et du temps pour les traiter. La solution pourrait être d'avoir une application côté serveur pour faire le traitement et envoyer seulement le résultat (qui est beaucoup plus petit). Le problème est qu'il n'y a pas de fonctions intégrées pour manipuler les réponses du serveur avant de les envoyer. Je pensais écouter tout le trafic sur le port 80, identifier les réponses HTTP pertinentes et les envoyer à mon application tout en bloquant la réponse (pour éviter d'envoyer un énorme volume de données qui ne sera pas traité par le client). Comme je manque de connaissances en réseau, je suis un peu perdu en pensant à la façon de le faire. J'ai regardé quelques méthodes d'interception de paquets de bas niveau comme WinPCap, mais il semble que cela demande beaucoup de travail pour faire ce dont j'ai besoin. De plus, je pense qu'il n'est pas possible de bloquer ou de modifier les réponses avec cette API. Un proxy inverse qui permet aux scripts utilisateur d'être déclenchés par des requêtes ou des réponses spécifiques serait parfait, mais je me demande s'il n'y a pas de façon plus simple de faire ce travail d'interception/envoi ailleurs.

Quelle serait la méthode la plus simple et la plus propre pour activer ce comportement?

Merci!

Répondre

1

J'ai fini de créer un simple proxy inverse pour accéder au serveur HTTP. Le proxy inverse extrait ensuite les informations pertinentes de la réponse du serveur et les envoie au composant de traitement côté serveur, et remplace les informations extraites de la réponse par un identifiant que le client utilise pour demander à l'autre composant d'obtenir les résultats de traitement.
L'article à http://www.codeproject.com/KB/web-security/HTTPReverseProxy.aspx était très utile pour faire le premier brouillon du proxy inverse.

0

Hmm .... trop de choix. 2 idées: configurer sur tous les clients un proxy Http. il y en a quelques-uns qui vous permettent de manipuler ce qui se passe dans les deux sens (avec des scripts, des plugins). ou faire une passe à travers le projet, qui écoute le port 80, et forewards les choses nécessaires pour le port 8080 (où votre application serveur d'origine fonctionne)

question est, quel logiciel est l'application serveur en cours d'exécution à, et ce connaissance (dev) avez-vous? ah. et qu'est-ce que "d'énormes données"? kilobyte? mégaoctet? gigaoctet?

Questions connexes