Configurer un proxy HTTP pour insérer un en-tête
-
03-07-2019 - |
Question
Je dois tester certaines interactions HTTP avec un client que je préfère ne pas modifier. Ce que je dois tester, c’est le comportement du serveur lorsque les demandes du client incluent un certain en-tête statique.
Je pense que le moyen le plus simple d’exécuter ce test consiste à configurer un proxy HTTP qui insère l’en-tête à chaque demande. Quel serait le moyen le plus simple de le configurer?
La solution
Je fais quelque chose comme cela dans mon environnement de développement en configurant Apache sur le port 80 en tant que proxy pour mon serveur d'applications sur le port 8080, avec la configuration Apache suivante:
NameVirtualHost *
<VirtualHost *>
<Proxy http://127.0.0.1:8080/*>
Allow from all
</Proxy>
<LocationMatch "/myapp">
ProxyPass http://127.0.0.1:8080/myapp
ProxyPassReverse http://127.0.0.1:8080/myapp
Header add myheader "myvalue"
RequestHeader set myheader "myvalue"
</LocationMatch>
</VirtualHost>
Voir LocationMatch et documentation de RequestHeader .
Ceci ajoute l'en-tête myheader: myvalue aux demandes adressées au serveur d'applications.
Autres conseils
Vous pouvez également installer Fiddler ( http://www.fiddler2.com/fiddler2/ . ) qui est très facile à installer (plus facile que Apache par exemple).
Après l'avoir lancé, il s'enregistrera comme proxy système. Ouvrez ensuite le " Règles " menu, puis choisissez "Personnaliser les règles ...". pour ouvrir un fichier JScript qui vous permet de personnaliser les requêtes.
Pour ajouter un en-tête personnalisé, ajoutez simplement une ligne dans la fonction OnBeforeRequest
:
oSession.oRequest.headers.Add("MyHeader", "MyValue");
Je voudrais essayer tinyproxy . En fait, le mieux serait d’intégrer un langage de script là-bas ... cela semble être un travail parfait pour Lua , en particulier après avoir constaté son efficacité pour mysqlproxy
Utilisez http://www.proxomitron.info et configurez l'en-tête souhaité, etc.
Plutôt que d'utiliser un proxy, j'utilise le plugin Firefox "Modifier les en-têtes" pour insérer des en-têtes (dans mon cas, simuler une connexion à l'aide de l'authentification unique pour pouvoir tester différentes personnes).
Si vous avez Ruby sur votre système, pourquoi ne pas utiliser un petit proxy Ruby utilisant Sinatra (veillez à installer le Gem Sinatra). Cela devrait être plus facile que de configurer Apache. Le code peut être trouvé ici.