Чому Chrome ігнорує локальні файли cookie jQuery?


83

Я використовую плагін 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 з веб-сторінок на жорсткому диску (такі шляхи, як файл: /// C: /websites/foo.html)
  • Щось у реалізації плагіна змушує Chrome відхиляти такі файли cookie

Хтось може це підтвердити та визначити першопричину?


Коли ви говорите, що демонстрація працює, ви маєте на увазі, що якщо ви збережете її на жорсткий диск і отримаєте доступ до неї як файл: //?
Грег 02

Ні - просто отримати доступ до посилання вище за допомогою Chrome.
Натан Лонг,

Відповіді:


94

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

* Chrome робить підтримку куки , якщо ви використовуєте локальний IP - адреса (127.0.0.1) безпосередньо. тож у випадку з localhost це може бути простішим обхідним шляхом.


Налаштування домену на IP для мене не спрацювало, але це спрацювало, якщо я видалив домен (локально, нам потрібен домен для виробництва)
Kyeotic

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


5

у мене була якась проблема, і я вирішив це жахливе рішення. разом використовуючи плагін store та 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");

Я знаю, що це не ідеальне рішення, але працює для мене


4

Це зробило роботу для мене:

введіть тут опис зображення

Клацніть правою кнопкою миші на піктограмі Chrome і виберіть Властивості, вкладку Ярлик та додайте --enable-file-cookies в останню частину цільового шляху.


3

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


3

будь ласка, перевірте файли cookie та Google Analytics .

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

змінити цей рядок на

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

цей проект працює нормально.


1
Дякую, зміна справи на "Шлях" вирішить мою проблему
Отто Канелліс

2

Інша можлива причина - path: "/"оскільки ви не використовуєте звичайну веб-URL-адресу, /мабуть, це не означає багато - спробуйте взагалі не встановлювати шлях.


Хороша думка, але в будь-якому випадку за замовчуванням використовується "/". Я спробував 'file: /// C: /', але я думаю, що в цьому контексті це нонсенс.
Натан Лонг

0

Якщо ви використовуєте chrominum, це команда для ввімкнення локальних файлів cookie

Chrome-браузер - Enable-файл-файли cookie

Це те саме, що стосується хрому

Сподіваюся, це допоможе вам!


0

Як обхідне рішення ви можете використовувати Tampermonkey з доступом до локальних файлів ( Як включити сторінки Local htm у скрипт Tampermonkey? ) Таким чином, ви будете використовувати сховище Tampermonkey і зможете встановлювати та отримувати свої дані за допомогою функцій GM_getValue (data) та GM_setValue (дані). Я використав це для своєї локальної сторінки HTML, яку я використовував як настроювану альтернативу Провіднику Windows

Але насправді місцеві сховища з відповіді Юрія працюють бездоганно.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.