2008-09-30 4 views
37

Ich muss eine HTTP-Interaktion mit einem Client testen, den ich lieber nicht ändern möchte. Was ich testen muss, ist das Verhalten des Servers, wenn die Anforderungen des Clients einen bestimmten statischen Header enthalten.Richten Sie einen HTTP-Proxy ein, um eine Kopfzeile einzufügen.

Ich denke, der einfachste Weg, um diesen Test auszuführen ist, einen HTTP-Proxy einzurichten, der den Header bei jeder Anfrage einfügt. Was wäre der einfachste Weg, dies einzurichten?

Antwort

59

ich so etwas in meiner Entwicklungsumgebung von Apache Konfiguration auf Port 80 als Proxy für meine Anwendungsserver auf Port 8080 mit der folgenden 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> 

Siehe LocationMatch und RequestHeader Dokumentation.

Dies fügt den Header myheader: myvalue zu Anfragen an den Anwendungsserver.

+11

Es wird auch myheader: myvalue zu den Antwortheadern hinzufügen. Das vollständige Dokument zu Apache mod_headers: http://httpd.apache.org/docs/current/mod/mod_headers.html –

+1

@Fred: Wie können wir die Header so einschränken, dass sie nur in der Proxy-Anfrage erscheinen? –

+4

Well Header fügt der Antwort und RequestHeader der Serveranforderung hinter dem Proxy hinzu. Was ich dabei getan habe, ist sicherzustellen, dass eine settings.xml-Abfrage niemals von einem anderen Proxyserver gecached wird, und zwar: SetEnvIf Request_URI "\ settings.xml $" object_is_settings_xml Kopfsatz Cache-Control "no-cache, no-store" env = object_is_settings_xml Kopfsatz läuft ab "Do, 01 Jan 1970 00:00:00 GMT" env = object_is_settings_xml Kopfsatz Pragma "kein Cache" env = object_is_settings_xml –

3

ich würde versuchen tinyproxy. in der Tat wäre die Vey am besten, eine Skriptsprache dort einzubetten ... klingt wie ein perfekter Job für Lua, vor allem nachdem er, wie gut es für mysqlproxy arbeitete

2

ich Mitarbeiter gehabt habe, die Burp verwendet hat (“ ein interaktiver HTTP/S-Proxy-Server zum Angreifen und Testen von Web-Anwendungen "). Sie können möglicherweise auch Fiddler ("ein HTTP-Debugging-Proxy") verwenden.

14

Sie können auch Fiddler (http://www.fiddler2.com/fiddler2/) installieren, das ist sehr einfach zu installieren (einfacher als Apache zum Beispiel).

Nach dem Start wird es sich als System-Proxy registrieren. Öffnen Sie dann das Menü "Regeln" und wählen Sie "Regeln anpassen ...", um eine JScript-Datei zu öffnen, mit der Sie Anforderungen anpassen können.

einen benutzerdefinierten Header hinzuzufügen, fügen Sie einfach eine Zeile in der OnBeforeRequest Funktion:

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

Anstatt einen Proxy verwenden, ich bin "Modify Headers" das Firefox-Plugin-Header eingefügt werden soll (in meinem Fall zu fälschen ein Login mit Single Sign On, damit ich verschiedene Leute testen kann).

+1

Afaik die Frage war nicht firefox-spezifisch. – peterh

+0

@peterh nein es war nicht, aber wenn Sie flexibel sind, welchen Browser Sie verwenden können, ist das Hinzufügen eines Plugins zu Firefox viel einfacher als das Einrichten einer Apache-Instanz. –

0

Wenn Sie Ruby auf Ihrem System haben, wie wäre es mit einem kleinen Ruby Proxy mit Sinatra (stellen Sie sicher, dass Sie den Sinatra Gem installieren). Dies sollte einfacher sein als das Einrichten von Apache. Der Code kann gefunden werden here.

Verwandte Themen