Frage Chrome speichert keine Cookies mit Semikolon


Ich versuche, einen Cookie auf meiner Website zu speichern, indem ich diese Funktion in Javascript verwende

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=/";
}

Seltsamerweise funktioniert das nicht in Chrome. Es funktioniert jedoch in Firefox.

Wenn ich das Semikolon wie unten in Komma ändere, 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=/";

Außerdem ist dies erst letzte Woche passiert. Hat das jemand anderes bemerkt? Und wenn ja, gibt es dafür eine Lösung?

Vielen Dank.

AKTUALISIEREN:

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


5
2018-05-05 14:40


Ursprung


Antworten:


Es gibt nur bestimmte Felder, die durch ein Semikolon gekennzeichnet sind. Gemäß MDN Dokumentation:

Jeder der folgenden Cookie-Attributwerte kann optional dem Schlüssel / Wert-Paar folgen, wobei das zu setzende / zu aktualisierende Cookie angegeben wird und ein Semikolontrennzeichen vorangestellt wird:

Die Attributwerte sind:

; Pfad = Pfad

; Domäne = Domäne

; Max-Alter = Max-Alter

; Ablaufdatum = Datum

;sichern

Der folgende Codeblock funktioniert 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 für Sie nicht funktioniert, welche Werte haben Sie? cname  cvalue, und exdays?


2
2018-05-05 14:43