Подтвердить что ты не робот

Не удается получить доступ к файлам cookie из файла document.cookie в JS, но браузер показывает файлы cookie.

Я не могу получить доступ к cookie из JavaScript. Мне нужно прочитать некоторое значение и отправить их через JSON для моих пользовательских проверок.

Я пытался получить доступ к файлам cookie из JS, как описано в:

Как вы можете видеть в коде, он выглядит прозрачным, как кристалл:

var c_value = document.cookie;

Когда я пытаюсь получить доступ к значению document.cookie из веб-отладчика Chrome, я вижу только пустую строку в выражениях Watch:

Поэтому я не могу прочитать значение cookie, которое мне нужно.

Я проверил имя файла cookie, которое я отправляю, чтобы получить связанное значение. Кроме того, я использую исходный код W3Schools для получения файлов cookie, если вам интересно (но со 2-го канала, метод похож).

Как я могу исправить свою проблему?

Спасибо!

4b9b3361

Ответ 1

Скорее всего, вы имеете дело с куками httponly. httponly - это флаг, который вы можете установить в файлах cookie, что означает, что JavaScript не может быть доступен. Это делается для предотвращения вредоносных скриптов, крадущих файлы cookie с конфиденциальными данными или даже целыми сеансами.

Таким образом, вам либо нужно отключить флаг httponly, либо вам нужно найти другой способ получить данные на ваш javascript.

Посмотрев на свой код, вы должны легко отключить только флаг http:

Response.AddHeader("Set-Cookie", "CookieName=CookieValue; path=/;");
Response.SetCookie(new HttpCookie("session-id") { Value = Guid.NewGuid().ToString(), HttpOnly = false });
Response.SetCookie(new HttpCookie("user-name") { Value = data.Login, HttpOnly = false });

Теперь вы должны иметь доступ к информации cookie из JavaScript. Однако я не знаю точно, какие данные вы пытаетесь получить, поэтому, может быть, вы можете пойти на другой подход и, например, сделать некоторый атрибут данных на странице с необходимой информацией, а не пытаться прочитать файл cookie:

<div id="example" data-info="whatever data you are trying to retrieve"></div>

console.log(document.getElementById('example').getAttribute('data-info'));

Ответ 2

Я бы сказал, что http только ваш первый виновник, но это также может произойти, не устанавливая область вашего файла cookie.

Если сайт был перенаправлен из другого домена, вам нужно будет изучить настройку области cookie. Домен и путь определяют область действия файла cookie, к URL-адресу которого должен быть отправлен файл cookie. В зависимости от этого вы можете не видеть cookie в своем ответе.

Я столкнулся с этой проблемой при настройке файла cookie на успешный логин SOML SSO и не смог извлечь файл cookie из документа, потому что он никогда не отправлялся как часть запроса.

Ответ 3

Если ваш файл cookie установлен как Set-Cookie или Set-Cookie2, он не является частью коллекции заголовков ответов: http://www.w3.org/TR/XMLHttpRequest/#the-getallresponseheaders%28%29-method

Возвращает все заголовки из ответа, за исключением тех, чье имя поля - Set-Cookie или Set-Cookie2.

Ответ 4

Следите также за атрибутом cookie Path, поскольку cookie отображается только подкаталогам в разделе "Путь". У меня была ваша проблема, и я решил установить "/"