Почему document.cookie не показывает все файлы cookie для сайта? - PullRequest
56 голосов
/ 20 июня 2009

Я иду на форум, который использует vBulletin 3.8. Когда я вхожу в систему, я использую firebug, чтобы увидеть, какие куки были установлены. Я вижу эти куки:

__ utmb, __utmc, __utma, __utmz, bbsessionhash, vbseo_loggedin, bbpassword, bbuserid, bblastactivity, bblastvisit

У них всех было установлено значение, и домен был идентичен.

Но когда я использую JavaScript для их просмотра, он видит только эти куки:

__ utmb, __utmc, __utma, __utmz, vbseo_loggedin, bblastactivity, bblastvisit

В firebug я вижу только эти три куки: bbsessionhash, bbpasword и bbuserid, которые фактически были установлены. HTTPOnly в столбце HTTPOnly. Что это значит, и по этой причине я не вижу эти куки в JavaScript, используя document.cookie?

1 Ответ

82 голосов
/ 20 июня 2009

С http://en.wikipedia.org/wiki/HTTP_cookie:

Cookies не видны напрямую клиентские программы, такие как JavaScript, если они были отправлены с HttpOnly флаг. С точки зрения вид на сервер, единственный разница по отношению к нормальному Дело в том, что заголовок set-cookie В строку добавлено новое поле, содержащее строка `HttpOnly ':

Set-Cookie: RMID=732423sdfs73242; expires=Fri, 31-Dec-2010 23:59:59 GMT; path=/; domain=.example.net; HttpOnly

Когда браузер получает такой cookie, предполагается использовать его как обычно в следующих обменах HTTP, но не для того, чтобы сделать его видимым для клиентские скрипты. Флаг HttpOnly не является частью какого-либо стандарта и реализован не во всех браузерах.

Обновление с 2017 года: прошло много времени с 2009 года, и флаг заголовка HttpOnly стал стандартом, определенным в разделе 101.6 RFC6265 , семантика хранилища, описанная в том же документе (ищите «http-only-flag» в тексте RFC).

Существует нет способа получить доступ к файлам cookie HttpOnly из API «не HTTP», например, JavaScript. По замыслу, ни чтение, ни запись таких файлов cookie невозможны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...