J'utilise une fonction qui définit un cookie. Cette fonction permet de lui transmettre le nom du cookie, la valeur du cookie et une date d'expiration supplémentaire du cookie.
la fonction:
function setCookie(name, value, exdate) {
var c_value = escape(value) + ((exdate === null || exdate === undefined) ? "" : "; expires=" + exdate);
document.cookie = name + "=" + c_value;
};
tilisation:
setCookie("my-cookie-name","my-value","Sun, 15 Jul 2012 00:00:01 GMT");
J'ai utilisé la fonction avec le format de date ci-dessus et je pense qu'elle est compatible avec tous les navigateurs, car j'ai testé si le cookie reste après la fermeture de divers navigateurs et leur réouverture. J'ai découvert qu'il y avait des problèmes lors de l'utilisation d'un format comme "15 Jul 2012"
. Ce format a fonctionné pour moi lors du développement dans Firefox, mais d'autres navigateurs semblaient uniquement définir le cookie comme cookie de session.
Dois-je m'en tenir à ce format: "dim, 15 juil 2012 00:00:01 GMT" ou existe-t-il d'autres formats que je pourrais utiliser pour la date d'expiration qui fonctionneront sur les principaux navigateurs (IE 7-9 , Firefox, Chrome, Opera, Safari)?
MODIFIER/METTRE À JOUR:
Les cookies nécessitent que la date d'expiration soit au Format UTC/GMT (voir la réponse ci-dessous).
J'ai modifié ma fonction comme suit afin de convertir toutes les dates passées qui ne sont pas au format correct.
function setCookie(name, value, exdate) {
//If exdate exists then pass it as a new Date and convert to UTC format
(exdate) && (exdate = new Date(exdate).toUTCString());
var c_value = escape(value) + ((exdate === null || exdate === undefined) ? "" : "; expires=" + exdate);
document.cookie = name + "=" + c_value;
};
Sur la base de tests et de lectures supplémentaires, une date au format le format UTC/GMT est requis par les cookies par ex. dim.15 juil.2012 00:00:01 GMT
Par conséquent, toutes les dates dans d'autres formats tels que 15 juil. 2012, ou 15/juil. 2012, ou 15/07/2012, doivent être transmis en tant qu'objet new Date
puis via la fonction toUTCString()
ou toGMTString()
.
j'ai donc modifié ma fonction comme suit:
function setCookie(name, value, exdate) {
//If exdate exists then pass it as a new Date and convert to UTC format
(exdate) && (exdate = new Date(exdate).toUTCString());
var c_value = escape(value) + ((exdate === null || exdate === undefined) ? "" : "; expires=" + exdate);
document.cookie = name + "=" + c_value;
};
La syntaxe spécifiée dans rfc 6265 pour générer les en-têtes Set-Cookie utiliserfc1123-date = wkday "," SP date1 SP time SP "GMT"
format de date du cookie et donc "Sun, 15 Jul 2012 00:00:01 GMT"
travaux.
Si je comprends bien, le algorithme d'analyse reconnaîtrait d'autres formats, par exemple: 00:00:01 15 jul 2012
mais ils ne doivent pas être générés.
Trouvé le format de date ddd, dd MMM yyyy HH':'mm':'ss 'GMT'
. Que quelqu'un trouve utile. Aussi très bonne référence ici