如何在HttpWebRequest中获取由“Set-Cookie”设置的cookie?

时间:2013-03-19 21:19:42

标签: c# httpwebrequest httprequest httpresponse httpwebresponse

我希望以下代码会产生非零值:

var webRequest = (HttpWebRequest) WebRequest.Create(loginUrl);
var webResponse = (HttpWebResponse)webRequest.GetResponse();
Console.WriteLine(webResponse.Cookies.Count);

webRespone.Cookies似乎没有显示任何Cookie。我很肯定饼干在那里,因为我正在用Fiddler嗅探数据。这是我得到的回应:

HTTP/1.1 200 OK
Cache-Control: private
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/7.5
Set-Cookie: __Abc=Def; path=/; HttpOnly
PS-ResponseTime: 00:00:00.0624001
PS-Build: 2013-03-19-11-36-59
PS-Node: 02
Date: Tue, 19 Mar 2013 21:14:51 GMT
Content-Length: 57872

这与cookie HttpOnly的事实有关吗?

修改

似乎我可以通过HttpWebRequest的{​​{1}}来获取它们,如果我打算继续执行一系列请求/响应,这肯定是有用的。但是为什么我无法通过CookieContainer字段访问它们呢?

由于

1 个答案:

答案 0 :(得分:0)

你是对的,你需要将请求交给CookieContainer实例,然后引用该实例来查看cookie。基本上,HttpWebResponse不会直接在标记为HttpOnly的响应上公开cookie。