需要在HttpWebResponse中访问HttpOnly cookie

时间:2017-03-05 11:21:51

标签: c# cookies httpwebrequest httponly cookiecontainer

我正在尝试使用POST方法自动登录网站,一切似乎都正常,但我的HttPWebResponse方法可以方便地跳过标记为HttpOnly的cookie。有什么方法可以读它。

 public CookieContainer _cookies = new CookieContainer();

我的代码

request.CookieContainer = _cookies;

我已经读过,当使用CookieContainer时,我不应该担心读取HttpOnly cookie,因为它们是以原子方式处理的。但显然事实并非如此。使用fiddler我确实看到我得到4个cookie但是响应.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);

}

1 个答案:

答案 0 :(得分:0)

  

Cookie HttpOnly确定页面脚本或其他活动   内容可以访问此cookie。

如果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);
    }