需要访问HttpWebResponse HttpOnly cookie

问题描述:

我想使用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'显示你的完整代码吗? –

饼干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