Необходимо получить доступ к файлу cookie HttpOnly в HttpWebResponse

Я пытаюсь автоматически войти на веб-сайт с помощью метода POST, и все работает нормально, за исключением того, что мой метод HttPWebResponse удобно пропускает файл cookie, помеченный как HttpOnly. Есть ли способ, которым я могу прочитать это.

 public CookieContainer _cookies = new CookieContainer();

вниз в коде у меня есть

request.CookieContainer = _cookies;

Я читал, что при использовании CookieContainer мне не следует беспокоиться о чтении файлов cookie HttpOnly, поскольку они обрабатываются атомарно. Но, видимо, это не так. Используя fiddler, я вижу, что получаю 4 файла cookie, но ответ. Размер файла cookie, если 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);

}


person Abdul    schedule 05.03.2017    source источник
comment
Можете ли вы показать свой полный код с HttpWebResponse   -  person Stanley S    schedule 05.03.2017


Ответы (1)


Файл cookie HttpOnly Определяет, может ли сценарий страницы или другой активный контент получить доступ к этому файлу cookie.

Приведенный ниже код возвращает значение true, если файл cookie имеет атрибут HttpOnly и к нему нельзя получить доступ через сценарий на стороне клиента; в противном случае ложно.

    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);
    }
person Stanley S    schedule 05.03.2017
comment
К сожалению, это не сработало. Он печатает 3 false. Где на самом деле должно быть напечатано 3 false и 1 true. Почему-то код не видит файл cookie HTTPOnly. Я добавил это предложение в свой пример кода. - person Abdul; 06.03.2017