IE8 blockiert JavaScript Cookies
Hier ist eine, die wirft mich für eine Schleife. Ich bin versucht, einen einfachen cookie hat einen Namen:Wert-paar auf IE8. Getestet auf FF und es funktioniert gut. IE8 hält ihn blockiert.
Habe ich gelesen, über die P3P-Zeug und erstellt eine grundlegende P3P-doc, keine Fehler gemeldet, der vom IBM-tool, und fügte hinzu, die folgenden auf allen Seiten:
<meta http-equiv="P3P" CP="CAO DSP COR PSDa CONi TELi OUR STP COM NAV"><link rel="P3Pv1" href="/w3c/p3p.xml"></link>
Den code, den ich verwenden, um das cookie ist wie folgt:
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());}
Irgendwelche Ideen, warum der IE8 hält Sie blockiert mich von der Einstellung dieses cookie?
Danke,
Schalk
- Sind Sie auf der Einstellung der cookie von einer "third-party" - Dokument (z.B. in einem IFRAME) ?
- Nein, es ist nur eine HTML-Seite. Ich habe tatsächlich isoliert den code in eine einfache HTML-Seite, zwei links, eine, die setzt den cookie, und eine, bekommt Sie den cookie-Wert und druckt es auf die Seite. Dieser funktioniert einwandfrei im Firefox, aber im IE8 als auch Chrome das cookie ist noch nie eingestellt.
- Jetzt haben es getestet auf IE6 in einer virtuellen Maschine läuft, und es wird es blockiert, so ist das etwas freaky IE Sache. Sowieso, Sie können sehen Sie die neuesten code, den ich verwende, hier : pastebin.com/yB8WSDjW
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte das gleiche problem und viel Zeit damit verbracht, Graben, warum IE nicht speichern, meine JS-Cookies. Meine P3P-Zeug war OK und IE sparen response-cookies, aber nicht JS.
Plötzlich und die meisten überraschend fand ich die Lösung durch entfernen der folgenden Zeile aus html:
< meta http-equiv="Content-Type" Content="text/html; charset=utf-8"/>
Ich habe keine Ahnung, warum das passiert, aber, dass alle meine Probleme gelöst. Hoffe, das jemand hilft.
Ein problem kann sein, dass du mit
getDate()
gibt den Tag des Monats. Wenn Ihrexpiredays
ist zu groß, es sollte überschlagen, um im nächsten Monat, aber im IE kann es bleiben in diesem Monat und läuft sofort. Vielleicht versuchen Sie dies:Ich benutze den gleichen code, für das Alter für das setzen von cookies auf dem client-Seite mit überhaupt kein problem. Ich würde auf jeden Fall untersuchen auf IE setup statt auf den code selbst. In DH, Sie haben eine Menge von Möglichkeiten zu sagen, ob Sie cookies akzeptieren oder nicht, je nach der Quelle (als Sie es bemerkte). Ich würde auf jeden Fall starten hier! Viel Glück
Ich erlebt und versucht, einige der Antworten hier von mir ausgestellten stellte sich heraus, dass der Ablauf. Ich würde auf 99999999999, aber wenn ich ging hinunter zu 9999999 es funktionierte. Es scheint IE8 hat eine Begrenzung auf den Ablauf (genius Microsoft, pure genius :s)
Habe ich Stand vor der gleichen situation und das problem war, dass...
expiredays
ist so ein Schlüsselwort NUR für den IE. Wenn Sie den Namen ändern, derexpiredays
variable inwhateveryouwant
, es funktioniert gut auf allen Browsern.Ich lief in dieses Problem, und es stellt sich heraus, es hatte zu tun mit der Länge der cookie-name. In diesem Fall hatte ich eine cookie-name war 26 Zeichen und dies funktioniert gut in alles, aber IE 8 und unten. Ich verkürzte den Namen nur 10 Zeichen und alle von einer plötzlichen IE 8 war das Lesen/schreiben der cookie einfach nur gut. Ich gehe davon aus, dass die willkürliche Grenze ist 16 Zeichen für IE-8 cookie-Namen.