2013-08-26 5 views
3

브라우저에서 보내는 것과 동일한 정보를 내 응용 프로그램에서 보내려고합니다. 피들러가 캡처 한 데이터의 일부입니다.연결 헤더 세트를 연결 유지로 설정

나는이 연결 속성을 고수했습니다. 내가 설정 한 경우 속성은 연결 유지 true로, 피들러에서 나는이를 참조하십시오

프록시 연결 : 연결 유지

내가 연결 유지하기 위해 연결 속성을 설정하려고하면, 나는이 오류가 발생합니다 :

Keep-Alive 및 Close는이 속성을 사용하여 설정할 수 없습니다.

연결 : 피들러 내가이 볼 수 있도록 코드를 작성하는 방법

연결 유지하는 것은

내 전체 코드 :

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(); 

답변

8

응용 프로그램을 가지고는 Connection: Keep-Alive 헤더를 보내 HttpWebRequest 개체의 KeepAlive 속성을 사용하십시오.

클라이언트가 (피들러 같은) 프록시 뒤에있는 것을 알고

, 그것은 Connection: Keep-Alive 헤더 대신 Proxy-Connection: Keep-Alive 헤더를 보낼 수 있습니다. HTTP/1.1 프록시 (Fiddler와 같은)는 업스트림 서버에 전달하기 전에 해당 헤더를 Proxy-Connection에서 Connection으로 변환합니다.

Keep-Alive을 제대로 지원하지 않는 HTTP/1.0 서버에서이 "프록시 이름 바꾸기 머리글"패턴이 오래 전에 도입되어 해결 방법을 시도했습니다. 이전의 프록시가 Proxy- 접두어를 제거하여 헤더의 이름을 변경하지 않은 경우 서버가 Proxy-Connection 헤더를 무시한다는 생각입니다.

+0

그래서 내가 말한 것은 Fiddler에서 Proxy-Connection 헤더가 표시 되더라도 업스트림 서버에 Connection 헤더가 표시된다는 것입니다. –

+0

일반적으로 예. 예를 들어 https://bayden.com/echo.aspx를 방문하십시오. – EricLaw

+0

신난다, 고마워! –