需要访问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);
}
答
饼干
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
你能用'HttpWebResponse'显示你的完整代码吗? –