Ответ 1
Вы не можете устанавливать файлы cookie в виде вещей, если он не работает на веб-сервере.
file:///C:/Users/me/Desktop/demo/demo.html
Однако:
http://localhost/demo/demo.html
работает.
У меня есть эта настоящая странная проблема с настройками 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 включены.
Вы не можете устанавливать файлы cookie в виде вещей, если он не работает на веб-сервере.
file:///C:/Users/me/Desktop/demo/demo.html
Однако:
http://localhost/demo/demo.html
работает.
HttpOnly файлы cookie не могут быть доступны из Javascript, а файлы cookie сеансов обычно устанавливаются как файлы cookie HttpOnly. См. Также этот вопрос StackOverflow: Как прочитать безопасный файл cookie с помощью JavaScript
Итак... проверьте, установлен ли файл cookie, который вы хотите прочитать, с флагом "HttpOnly"... Если это так, вы знаете преступника. Это не ошибка, это особенность!
Для использования и документов см. здесь:
https://developer.mozilla.org/en-US/docs/DOM/document.cookie
Если вы находитесь в режиме инкогнито или отключены файлы cookie, это не сработает.
Это сработало для меня при запуске с локального хоста, запущенного 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 при открытии в качестве файла, но работал каждый раз при открытии с сервера.