IE8 блокирует файлы cookie JavaScript - PullRequest
6 голосов
/ 01 июня 2010

Вот тот, который бросает меня за петлю. Я пытаюсь установить простой файл cookie, который имеет одну пару имя: значение в IE8. Проверено на FF и работает нормально. IE8 продолжает его блокировать.

Я прочитал о материалах P3P и создал базовый документ P3P, об инструменте IBM не сообщалось об ошибках, и добавил на всех страницах следующее:

<meta http-equiv="P3P" CP="CAO DSP COR PSDa CONi TELi OUR STP COM NAV"><link rel="P3Pv1" href="/w3c/p3p.xml"></link>

Код, который я использую для установки cookie, выглядит следующим образом:

function setCompatibilityCookie(c_name, value, expiredays) {
var exdate = new Date();
exdate.setDate(exdate.getDate() + expiredays);
document.cookie= c_name + "=" + escape(value) + ((expiredays==null) ? "" : ";expires=" + exdate.toUTCString());}

Есть идеи, почему IE8 не позволяет мне установить этот файл cookie?

Спасибо, Schalk

Ответы [ 6 ]

2 голосов
/ 23 декабря 2010

У меня была та же проблема, и я потратил много времени на то, чтобы выяснить, почему IE не сохранит мой файл cookie JS. Мой P3P был в порядке, и IE сохранял файлы cookie ответа, но не JS.

Внезапно и неожиданно я нашел решение, убрав следующую строку из html:

Я понятия не имею, почему это происходит, но это решило все мои проблемы. Надеюсь, это кому-нибудь поможет.

1 голос
/ 06 июля 2010

Я использую один и тот же код целую вечность для установки файлов cookie на стороне клиента без каких-либо проблем. Я определенно исследую установку IE вместо самого кода. В IE у вас есть много возможностей сказать, принимаете ли вы куки или нет, в зависимости от источника (как вы его заметили). Я определенно начал бы здесь! Удачи

1 голос
/ 02 июня 2010

Одной из проблем может быть то, что вы используете getDate(), который возвращает день месяца. Если ваш expiredays слишком велик, он должен быть перенесен на следующий месяц, но в IE он может остаться в этом месяце и сразу же истечь. Может быть, попробуйте это:

function setCompatibilityCookie(c_name, value, expiredays) {
var exdate = new Date();
exdate.setTime(exdate.getTime() + (expiredays * 86400000));
document.cookie= c_name + "=" + escape(value) + ((expiredays==null) ? "" : ";expires=" + exdate.toUTCString());}
0 голосов
/ 27 ноября 2012

Я тоже столкнулся с этой проблемой, и оказалось, что это связано с длиной имени файла cookie. В этом случае у меня было имя файла cookie, состоящее из 26 символов, и это отлично работает во всем, кроме IE 8 и ниже. Я сократил имя до 10 символов, и внезапно IE 8 отлично прочитал / записал cookie. Я предполагаю, что произвольное ограничение здесь составляет 16 символов для имени файла cookie IE 8.

0 голосов
/ 26 октября 2011

Я сталкивался с такой же ситуацией, и проблема была в том, что ... expiredays - это ключевое слово ТОЛЬКО для IE Если вы измените имя переменной expiredays в whateveryouwant, она хорошо работает во всех браузерах.

0 голосов
/ 22 февраля 2011

Я испытал это и попробовал некоторые ответы здесь, мой выданный, оказалось, истек.Я бы установил его на 99999999999, но когда я опустил его до 9999999, это сработало.Похоже, что IE8 имеет ограничение на срок действия (гений Microsoft, чистый гений: с)

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