2013-03-10 1 views
1

편집 :! 나는 또한 HTTP Listener에 확신 아니에요초기 GET HTTP/1.1 요청에 대한 요청 헤더는 어디서 발생합니까?

  1. 그래서 응답 헤더 = 다음 게시물에 대한 요청 헤더 아무것도를한다.
  2. 브라우저가 올바른 요청 헤더로 시작하는 이유는 무엇입니까?하지만 클라이언트의 간단한 GET HTTP/1.1은 원래 요청 헤더가 도메인별로 많이 변경되는 것을 보지 못합니다. ???????
  3. 쿠키를 올바르게 사용하지 않습니다. 왜 그런가요?

어떻게이 브라우저 마법을 부여 할 수 있습니까?

* WebClient에는 .RequestHeaders가 없습니다.

* HttpWebRequest 헤더를 Chrome/Fiddler 스니핑과 비교합니다.

using System.Net; 
    private void Form1_Load(object sender, EventArgs e) 
    { 
     CookieContainer cookieJar = new CookieContainer(); 
     cookieJar.GetCookies(new Uri("https://www.google.com")); 
     HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://www.google.com"); 
     request.CookieContainer = cookieJar; 
     HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 


     this.Text = request.Headers.Count.ToString(); 
      WebHeaderCollection header = request.Headers; 
      for (int i = 0; i < header.Count; i++) 
      { 
       richTextBox1.AppendText(header.GetKey(i) + ": " + header[i] + "\n"); 
      } 
    } 

Fiddler/Chrome 콤보는 10 개의 요청 헤더를 반환합니다. 클라이언트는 2를 반환합니다.

왜 "Accept-Encoding : gzip, deflate, sdch"헤더가 항상 응답을 이상한 2 문자 플롭 데이터로 만드나요?

+0

스니핑/피들러 – ploxtic

+0

에 비해 사람이 알고 까지를 어떤 것. – ploxtic

+0

이봐, 나는이 "쿠키 항아리"농담에 지쳤다. 나는 사람들이 그것을 극복하고 적절한 변수 이름을 사용하기를 바랍니다. – usr

답변

0

이 아니에요 당신이 달성하려고하지만, 웹 클라이언트는 사용자가 요청 헤더가 원하는대로 보이게하기 위해 사용할 수있는 헤더 속성이 무엇인지 아주 명확 :

이 이
using (var client = new WebClient()) 
{ 
    client.Headers[HttpRequestHeader.UserAgent] = "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.152 Safari/537.22"; 
    client.Headers[HttpRequestHeader.AcceptLanguage] = "fr-FR,fr;q=0.8"; 
    ... you could set here whatever headers you want 

    string result = client.DownloadString("http://www.google.com"); 
} 
+0

당신은 거꾸로, 입력하고 싶지 않다, 받고 싶다 ... 당신은 브라우저에 입력하지 않았다. – ploxtic

+0

당신은 응답 헤더를 의미합니까? –

+0

항상 요청 헤더를 의미합니다 .. 크롬/피들러 요청 및 게시/스누틀 요청에 대한 귀하의 것과 비교하십시오. 일부 제네릭/인프라가 누락 될 것입니다. – ploxtic

관련 문제