3

我正在尝试使用 POST 方法自动登录到网站,除了我的 HttPWebResponse 方法方便地跳过标记为 HttpOnly 的 cookie 之外,一切似乎都运行良好。有什么办法可以读。

 public CookieContainer _cookies = new CookieContainer();

在我的代码中

request.CookieContainer = _cookies;

我已经读过,当使用 CookieContainer 时,我不应该担心读取 HttpOnly cookie,因为它们是原子处理的。但显然情况并非如此。使用提琴手,我确实看到我得到了 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);

}

4

1 回答 1

0

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

HttpOnly如果 cookie 具有属性并且无法通过客户端脚本访问,则下面的代码返回 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);
    }
于 2017-03-05T12:27:49.567 回答