2017-03-05 105 views
2

我想使用POST方法自動登錄到網站,似乎一切正常,除了我的HttPWebResponse方法方便地跳過標記爲HttpOnly的cookie。有什麼方法可以閱讀嗎?需要訪問HttpWebResponse HttpOnly cookie

public CookieContainer _cookies = new CookieContainer(); 

倒在代碼中,我有

request.CookieContainer = _cookies; 

我已閱讀,使用的CookieContainer時,我不應該擔心閱讀的HttpOnly餅乾,因爲他們是原子處理。但顯然情況並非如此。使用fiddler我確實看到我得到了4個cookie但是是response.Cookies大小如果是3並且使用相同的代碼會拒絕下一個請求。請幫忙!!

的完整代碼如下:

HttpWebRequest request = CreateRequest(uri); 
request.Method = "POST"; 
request.GetRequestStream().Write(data, 0, data.Length); 
HttpWebResponse response = (HttpWebResponse) request.GetResponse(); 
return DecodeResponse(response); 

DecodeResponse的工作原理如下

foreach (System.Net.Cookie cookie in response.Cookies) 
{ 
    Console.WriteLine("Cookie:"); 
    Console.WriteLine(cookie.HttpOnly); 

    _cookies.Add(new Uri(response.ResponseUri.GetLeftPart(UriPartial.Authority)), cookie); 

}

+0

你能用'HttpWebResponse'顯示你的完整代碼嗎? –

回答

0

餅乾HttpOnly決定網頁腳本或其他活動 內容是否可以訪問此曲奇餅。

如果cookie具有HttpOnly屬性,無法通過一個客戶端腳本訪問下面的代碼返回true;否則,是錯誤的。

var _cookies = new CookieContainer(); 
    var request = (HttpWebRequest)WebRequest.Create("http://yourURL.com"); 
    request.CookieContainer = _cookies; 
    HttpWebResponse response = request.GetResponse() as HttpWebResponse; 
    foreach (Cookie cook in response.Cookies) 
    { 
     Console.WriteLine("Cookie:"); 
     Console.WriteLine(cook.HttpOnly); 
    } 
+0

不幸的是,這並沒有奏效。它打印3錯誤。在現實中它應該打印出3個假和1個真。不知何故代碼沒有看到HTTPOnly cookie。我在示例代碼中添加了這個建議。 – Abdul