2017-05-05 6 views
4

Speichern Ich versuche, ein Cookie auf meiner Seite in JavascriptChrome Cookies nicht mit Semikolon

setCookie: function(cname, cvalue, exdays) { 
    var d = new Date(); 
    d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000)); 
    var expires = "expires=" + d.toUTCString(); 
    document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/"; 
} 

Seltsamer mit dieser Funktion speichern diese in Chrome nicht funktioniert. Es funktioniert jedoch in Firefox.

Wenn ich das Semikolon in Komma statt wie unten ändern, funktioniert es in Chrome. Die Attribute werden jedoch als Teil des Cookie-Werts anstelle von Attributen gesetzt, die der Browser lesen kann.

document.cookie = cname + "=" + cvalue + "," + expires + ",path=/"; 

Darüber hinaus ist diese begann erst letzte Woche passiert. Hat das jemand anderes bemerkt? Und wenn ja, gibt es dafür eine Lösung?

Danke.

UPDATE:

Es scheint mit dem Format des Datums ein Problem zu sein. Ich begann Max-Age stattdessen mit einem ganzzahligen Wert für Sekunden und es funktioniert jetzt gut, auch mit dem Semikolon.

+0

Welche Eingaben verwenden Sie zum Speichern des Cookies? Stellen Sie sicher, dass der Cookie-Schlüssel und der Cookie-Name keine Semikolons haben ... –

+0

Ein Test-Cookie sieht so aus, speichert aber nicht: testcookie = testvalue; expires = Sa, 06. Mai 2017 16 : 02: 37 GMT – fractal5

Antwort

2

Es gibt nur bestimmte Felder, die durch ein Semikolon gekennzeichnet sind. Wie pro MDN documentation:

Jede der folgenden Cookie Attributwerte können den Schlüssel-Wert-Paar, gegebenenfalls folgen, die Cookie-Spezifizierungs einzustellen/zu aktualisieren, und durch ein Semikolon Separators voran:

die Attributwerte sind:

; path = Pfad

; domain = Domain

; max-age = max-a ge

; expires =

stammen; sichern

Der Code unten Block arbeitet in Chrome Version 58.0.3029.96 (64-Bit) für mich.

var cname = "MyCookie"; 
var cvalue = "kjqwrQR1515jetrQT26jo2u5"; 
var expires = " ;expires=" + Date.now() + 100000; 

document.cookie = cname + "=" + cvalue + expires + " ;path=/"; 

Wenn dieses Format nicht für Sie arbeiten, welche Werte Ihre cnamecvalue und exdays?

+0

Rechts. Aber genau das, was ich mache. Oder fehlt mir etwas? – fractal5

Verwandte Themen