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

Javascript document.cookie всегда пустая строка

У меня есть эта настоящая странная проблема с настройками cookie javascript на стороне клиента. На данный момент я разрабатываю небольшую демонстрацию на одну страницу, чтобы использовать файлы cookie для хранения некоторых "предпочтений". Обратите внимание, что я не могу использовать серверный язык для этой демонстрации или любых сторонних плагинов jQuery.

Итак, я написал объект javascript для установки файла cookie:

var cookie = {
  set: function (name,value,exdays) {

    var exdate = new Date();
    exdate.setDate(exdate.getDate() + exdays);
    var value = escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
    document.cookie=name + "=" + value;
    console.log(document.cookie);
  }
}

cookie.set('foo','bar',2);
console.log(document.cookie);

Он просто возвращает пустую строку. Я зашел в консоль Chrome, чтобы проверить, могу ли я это сделать, напрямую изменяя document.cookie

> document.cookie = "foo=bar";
"foo=bar"
> document.cookie
""

Как настроить cookie с помощью javascript на стороне клиента?

Изменить: я не в режиме инкогнито, и файлы cookie включены.

4b9b3361

Ответ 1

Вы не можете устанавливать файлы cookie в виде вещей, если он не работает на веб-сервере.

file:///C:/Users/me/Desktop/demo/demo.html

Однако:

http://localhost/demo/demo.html работает.

Ответ 2

HttpOnly файлы cookie не могут быть доступны из Javascript, а файлы cookie сеансов обычно устанавливаются как файлы cookie HttpOnly. См. Также этот вопрос StackOverflow: Как прочитать безопасный файл cookie с помощью JavaScript

Итак... проверьте, установлен ли файл cookie, который вы хотите прочитать, с флагом "HttpOnly"... Если это так, вы знаете преступника. Это не ошибка, это особенность!

Ответ 4

Это сработало для меня при запуске с локального хоста, запущенного chrome 28.0.1472.0 canary:

<!DOCTYPE html>
<html>
<head>
  <title>localhost cookie</title>
</head>
<body>
  <script type="text/javascript">
    console.log(document.cookie);
    var myCookie = "mycookie=hellocookie";
    document.cookie = myCookie;
  </script>
</body>
</html>

Запустите его на сервере, зайдите на страницу и посмотрите на свой магазин cookie, обновите страницу и посмотрите на консоль.

Он не устанавливал cookie при открытии в качестве файла, но работал каждый раз при открытии с сервера.