2008-09-30 17 views
37

Necesito probar alguna interacción HTTP con un cliente que prefiero no modificar. Lo que necesito probar es el comportamiento del servidor cuando las solicitudes del cliente incluyen un determinado encabezado estático.Configurar un proxy HTTP para insertar un encabezado

Estoy pensando que la manera más fácil de ejecutar esta prueba es configurar un proxy HTTP que inserte el encabezado en cada solicitud. ¿Cuál sería la forma más sencilla de configurar esto?

Respuesta

59

hago algo como esto en mi entorno de desarrollo mediante la configuración de Apache en el puerto 80 como sustituto de mi servidor de aplicaciones en el puerto 8080, con la siguiente Apache config:

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> 

Ver LocationMatch y RequestHeader documentación.

Esto agrega el encabezado myheader: myvalue a las solicitudes que van al servidor de aplicaciones.

+11

También agregará myheader: myvalue a los encabezados de respuesta. El documento completo en Apache mod_headers: http://httpd.apache.org/docs/current/mod/mod_headers.html –

+1

@Fred: Entonces, ¿cómo restringimos que los encabezados aparezcan únicamente en la solicitud de proxy? –

+4

Well Header se está agregando a la respuesta, y RequestHeader a la solicitud del servidor detrás del proxy. Lo que hice de esto es asegurarme de que un proxy nunca coloque en caché la consulta de settings.xml, y lo hice: SetEnvIf Request_URI "\ settings.xml $" object_is_settings_xml Header set Cache-Control "no-cache, no-store" env = object_is_settings_xml Conjunto de encabezado Vence "jue, 01 ene 1970 00:00:00 GMT" env = object_is_settings_xml Encabezado establece Pragma "no-cache" env = object_is_settings_xml –

3

probaría tinyproxy. De hecho, la encuesta mejor sería embedd un lenguaje de script que hay ... suena como un trabajo perfecto para Lua, especialmente después de ver lo bien que funcionó para mysqlproxy

2

he tenido compañeros de trabajo que han utilizado Burp (" un servidor proxy HTTP/S interactivo para atacar y probar aplicaciones web ") para esto. También es posible que pueda usar Fiddler ("un proxy de depuración de HTTP").

14

También puede instalar Fiddler (http://www.fiddler2.com/fiddler2/) que es muy fácil de instalar (más fácil que Apache, por ejemplo).

Después de iniciarlo, se registrará como proxy del sistema. A continuación, abra el menú "Reglas" y elija "Personalizar reglas ..." para abrir un archivo JScript que le permita personalizar las solicitudes.

Para agregar un encabezado personalizado, sólo tiene que añadir una línea en la función OnBeforeRequest:

oSession.oRequest.headers.Add("MyHeader", "MyValue"); 
0

En lugar de utilizar un proxy, estoy usando el plugin de Firefox "Modify Headers" para insertar encabezados (en mi caso, de falsificar un inicio de sesión usando el inicio de sesión único para que pueda probar como personas diferentes).

+1

Afaik la pregunta no era específica de Firefox. – peterh

+0

@ peterh no, no lo fue, pero si tiene flexibilidad sobre qué navegador puede usar, agregar un complemento a Firefox es mucho más fácil que configurar una instancia de Apache. –

0

Si tiene ruby ​​en su sistema, qué tal un pequeño Ruby Proxy usando Sinatra (asegúrese de instalar la gema Sinatra). Esto debería ser más fácil que configurar Apache. El código se puede encontrar here.

Cuestiones relacionadas