Set up an HTTP proxy to insert a header
Asked Answered
I

7

61

I need to test some HTTP interaction with a client I'd rather not modify. What I need to test is the behavior of the server when the client's requests include a certain, static header.

I'm thinking the easiest way to run this test is to set up an HTTP proxy that inserts the header on every request. What would be the simplest way to set this up?

Indubitable answered 30/9, 2008 at 18:55 Comment(0)
S
89

I do something like this in my development environment by configuring Apache on port 80 as a proxy for my application server on port 8080, with the following 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>

See LocationMatch and RequestHeader documentation.

This adds the header myheader: myvalue to requests going to the application server.

Soloist answered 30/9, 2008 at 19:44 Comment(4)
It will also add myheader: myvalue to the response headers. The full doc on Apache mod_headers: httpd.apache.org/docs/current/mod/mod_headers.htmlOsprey
@Fred: So how do we restrict the headers to appear in the proxied request only?Carpet
Well Header is adding to the response, and RequestHeader to the server request behind the proxy. What I did from this is to make sure a settings.xml query never get cached by other proxy, and I did: SetEnvIf Request_URI "\settings.xml$" object_is_settings_xml Header set Cache-Control "no-cache, no-store" env=object_is_settings_xml Header set Expires "Thu, 01 Jan 1970 00:00:00 GMT" env=object_is_settings_xml Header set Pragma "no-cache" env=object_is_settings_xmlOsprey
If you get an error about RequestHeader not being recognized, be sure mod_headers is enabled with e.g. a2enmod headers (and reload Apache after).Boyne
H
15

You can also install Fiddler (http://www.fiddler2.com/fiddler2/) which is very easy to install (easier than Apache for example).

After launching it, it will register itself as system proxy. Then open the "Rules" menu, and choose "Customize Rules..." to open a JScript file which allow you to customize requests.

To add a custom header, just add a line in the OnBeforeRequest function:

oSession.oRequest.headers.Add("MyHeader", "MyValue");
Harley answered 1/10, 2008 at 14:9 Comment(0)
C
3

i'd try tinyproxy. in fact, the vey best would be to embedd a scripting language there... sounds like a perfect job for Lua, especially after seeing how well it worked for mysqlproxy

Cataplasia answered 30/9, 2008 at 19:3 Comment(0)
V
2

I have had co-workers that have used Burp ("an interactive HTTP/S proxy server for attacking and testing web applications") for this. You also may be able to use Fiddler ("a HTTP Debugging Proxy").

Venusberg answered 30/9, 2008 at 19:16 Comment(0)
O
1

Use http://www.proxomitron.info and set up the header you want, etc.

Ornithopter answered 30/9, 2008 at 19:25 Comment(0)
O
1

Rather than using a proxy, I'm using the Firefox plugin "Modify Headers" to insert headers (in my case, to fake a login using the Single Sign On so I can test as different people).

Olomouc answered 6/6, 2013 at 19:35 Comment(2)
Afaik the question wasn't firefox-specific.Renitarenitent
@Renitarenitent no it wasn't, but if you're flexible about what browser you can use, adding a plugin to Firefox is a lot easier than setting up an Apache instance.Olomouc
P
0

If you have ruby on your system, how about a small Ruby Proxy using Sinatra (make sure to install the Sinatra Gem). This should be easier than setting up apache. The code can be found here.

Piane answered 25/7, 2015 at 4:4 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.