Почему Chrome игнорирует локальные файлы cookie jQuery?

Я использую плагин jQuery Cookie (скачать, демонстрация и исходный код с комментариями) для установки и чтения файла cookie. Разрабатываю страницу на своем локальная машина.

Следующий код успешно установит cookie в FireFox 3, IE 7 и Safari (ПК). Но если браузер - это Google Chrome, а страница является локальным файлом, не работает.

$.cookie("nameofcookie", cookievalue, {path: "/", expires: 30});

Что я знаю:

  • демонстрация плагина работает с Chrome.
  • Если я помещаю свой код на веб-сервер (адрес начинается с http: //), он работает с Chrome.

Таким образом, cookie не работает только для Google Chrome в локальных файлах.

Возможные причины:

  • Google Chrome не принимает файлы cookie с веб-страниц на жестком диске (такие пути, как file: /// C: /websites/foo.html)
  • Что-то в реализации плагина заставляет Chrome отклонять такие файлы cookie.

Может ли кто-нибудь подтвердить это и определить первопричину?

Когда вы говорите, что демонстрация работает, вы имеете в виду, если вы сохраните ее на жесткий диск и получите к ней доступ как file: //?

Greg 02.12.2008 23:15

Нет - просто перейдя по ссылке выше в Chrome.

Nathan Long 15.12.2008 21:53
Как конвертировать HTML в PDF с помощью jsPDF
Как конвертировать HTML в PDF с помощью jsPDF
В этой статье мы рассмотрим, как конвертировать HTML в PDF с помощью jsPDF. Здесь мы узнаем, как конвертировать HTML в PDF с помощью javascript.
84
2
67 022
9
Перейти к ответу Данный вопрос помечен как решенный

Ответы 9

Другой возможной причиной является path: "/", поскольку вы не используете обычный веб-URL, /, вероятно, не имеет большого значения - попробуйте вообще не устанавливать путь.

Хорошая мысль, но в любом случае по умолчанию стоит '/'. Я пробовал 'file: /// C: /', но считаю, что это чепуха в данном контексте.

Nathan Long 02.12.2008 23:20
Ответ принят как подходящий

Chrome не поддерживает файлы cookie для локальных файлов (или, как упоминал Питер Лайонс, localhost *), если вы не запустите его с флагом --enable-file-cookies. Вы можете прочитать обсуждение этого на http://code.google.com/p/chromium/issues/detail?id=535.

* Chrome делает поддерживает файлы cookie, если вы напрямую используете локальный IP-адрес (127.0.0.1). так что в случае с localhost это может быть более простой обходной путь.

Установка домена на IP у меня не сработала, но сработала, если я удалил домен (локально нам нужен домен для производства)

Kyeotic 30.04.2012 23:51

В Mac OSX для запуска Chrome с флагом --enable-file-cookies используйте команду терминала: 'open / Applications / Google \ Chrome.app/Contents/MacOS/Google \ Chrome --args --enable-file-cookies' - (или настройте его в соответствии с местоположением вашего Chrome.app)

Peeech 09.04.2018 22:12

Для локальных приложений используйте вместо этого localStorage в Chrome: http://people.w3.org/mike/localstorage.html

У меня была такая же проблема, попробуйте вместо этого использовать IP-адрес localhost. Например, "http://127.0.0.1/yoursite/"

пожалуйста, проверьте Файлы cookie и Google Analytics.

$.cookie("nameofcookie", cookievalue, {path: "/", expires: 30});

измените эту строку на

$.cookie("nameofcookie", cookievalue, {*Path:* "/", expires: 30});

этот проект работает нормально.

Спасибо, изменение регистра на "Путь" решило мою проблему

Otto Kanellis 02.06.2014 08:08

У меня была проблема, и я решил ее этим ужасным решением. совместное использование магазина и плагина cookie.

<script src = "js/jquery.cookies.2.2.0.js" type = "text/javascript"></script>
<script src = "js/jquery.Storage.js" type = "text/javascript"></script>

var is_chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;

//get cookies
var helpFlag=(is_chrome)?$.Storage.get("helpFlag"):$.cookies.get("helpFlag");

//set cookies
if (is_chrome)$.Storage.set("helpFlag", "1");else $.cookies.set("helpFlag", "1");

Я знаю, что это не идеальное решение, но мне подходит

Если вы используете chrominum, это команда для включения локальных файлов cookie.

chromium-browser --enable-file-cookies

То же самое и с хромом

Надеюсь, это поможет вам!

Это сработало для меня:

Щелкните правой кнопкой мыши значок Chrome, выберите «Свойства», вкладку «Ярлык» и добавьте --enable-file-cookies в последний из целевого пути.

В качестве обходного пути вы можете использовать Tampermonkey с доступом к локальным файлам (Как включить локальные htm-страницы в скрипт Tampermonkey?) Таким образом, вы будете использовать хранилище Tampermonkey и сможете устанавливать и получать свои данные с помощью функций GM_getValue (данные) и GM_setValue (данные). Я использовал это для своей локальной HTML-страницы, которую использовал как настраиваемую альтернативу проводнику Windows.

Но на самом деле localStorage от Юрий ответ работает отлично.

Другие вопросы по теме