10

I'm trying to send the same information from my application as I send from the browser. Here is part of data captured by Fiddler:

POST http://something/ HTTP/1.1
Host: something.com
Connection: keep-alive

I got stuck with this connection property. If I set the property keep-alive to true, in Fiddler I see this:

Proxy-Connection: Keep-Alive

If I try to set the connection property to Keep-alive, I get this error:

Keep-Alive and Close may not be set using this property.

How to write the code so that in Fiddler I can see this:

Connection: keep-alive

My full code:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://myUrl ");
request.Method = "POST";
request.ProtocolVersion = HttpVersion.Version11;
request.Accept = "*/*";
WebHeaderCollection headers = new WebHeaderCollection();
headers.Add("Accept-Encoding", "myEncoding");
headers.Add("Accept-Language", "myLang");
request.Headers = headers;
request.ContentType = "myContentType";
request.Referer = "myReferer";
request.UserAgent = "myUserAgent";
ASCIIEncoding encoding = new ASCIIEncoding();
string postData = "myData";
byte[] data = encoding.GetBytes(postData);
request.GetResponse().Close();
John Saunders
  • 160,644
  • 26
  • 247
  • 397
Milan Novotný
  • 319
  • 2
  • 3
  • 8

1 Answers1

18

To have your application send a Connection: Keep-Alive header, use the KeepAlive property on the HttpWebRequest object.

When a client knows that it is behind a proxy (like Fiddler), it may send a Proxy-Connection: Keep-Alive header instead of a Connection: Keep-Alive header. The expectation is that a HTTP/1.1 proxy (like Fiddler) will convert that header from Proxy-Connection to Connection before passing it to the upstream server.

This "proxy renames header" pattern was introduced many years ago to attempt to workaround hangs in HTTP/1.0 servers that didn't support Keep-Alive properly; the idea is that the server would ignore the Proxy-Connection header if the outdated proxy didn't rename the header by removing the Proxy- prefix.

EricLaw
  • 56,563
  • 7
  • 151
  • 196
  • So what you are saying is that even if I see in Fiddler the Proxy-Connection header, the upstream server will see the Connection header anyway? – Milan Novotný Aug 26 '13 at 19:32
  • How do we debug it if fiddler ISN'T renaming it? Mine seems to intermittenly not rename it for the same application and same request. sometimes it works and sometimes it doesn't – kamcknig Sep 23 '16 at 18:00