web-dev-qa-db-fra.com

Pourquoi Chrome ignore-t-il les cookies locaux jQuery?

J'utilise le plugin jQuery Cookie ( download et demo et code source avec commentaires ) pour créer et lire un cookie. Je développe la page sur ma machine locale.

Le code suivant permettra de définir un cookie dans FireFox 3, IE 7 et Safari (PC). Mais si le navigateur est Google Chrome ET que la page est un fichier local, cela ne fonctionne pas.

$.cookie("nameofcookie", cookievalue, {path: "/", expires: 30});

Ce que je sais:

  • Le plugin demo fonctionne avec Chrome.
  • Si je mets mon code sur un serveur Web (adresse commençant par http: //), cela fonctionne avec Chrome.

Le cookie échoue donc uniquement pour Google Chrome sur les fichiers locaux.

Causes possibles:

  • Google Chrome n'accepte pas les cookies des pages Web du disque dur (chemins d'accès tels que fichier: /// C: /websites/foo.html).
  • Quelque chose dans l'implantation du plug-in amène Chrome à rejeter de tels cookies.

Quelqu'un peut-il confirmer cela et identifier la cause première?

80
Nathan Long

Chrome ne prend pas en charge les cookies pour les fichiers locaux (ou, comme Peter Lyons, localhost *), à moins que vous ne le lanciez avec l'indicateur --enable-file-cookies. Vous pouvez lire une discussion à ce sujet sur http://code.google.com/p/chromium/issues/detail?id=535 .

* Chrome prend-il en charge les cookies si vous utilisez directement l'adresse IP locale (127.0.0.1)? Donc, dans le cas localhost, cela pourrait être une solution de contournement plus facile.

91
Matthew Crumley

Pour les applications locales, utilisez localStorage dans Chrome à la place: http://people.w3.org/mike/localstorage.html

6
Yuri

j'ai eu un problème et résolu cette terrible solution . en utilisant magasin et cookie plugin ensemble.

<script src="js/jquery.cookies.2.2.0.js" type="text/javascript"></script>
<script src="js/jquery.Storage.js" type="text/javascript"></script>

var is_chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;

//get cookies
var helpFlag=(is_chrome)?$.Storage.get("helpFlag"):$.cookies.get("helpFlag");

//set cookies
if(is_chrome)$.Storage.set("helpFlag", "1");else $.cookies.set("helpFlag", "1");

Je sais que ce n'est pas une solution parfaite mais fonctionne pour moi

5
Serdar Güner

Cela a fait le travail pour moi:

 enter image description here

Faites un clic droit sur votre icône Chrome et sélectionnez Propriétés, onglet Raccourci et ajoutez --enable-file-cookies au dernier chemin de la cible.

4
paulalexandru

J'ai eu le même problème, s'il vous plaît essayez d'utiliser l'adresse IP de localhost à la place. Par exemple, "http://127.0.0.1/yoursite/"

3
Tiji

veuillez consulter Cookies & Google Analytics .

$.cookie("nameofcookie", cookievalue, {path: "/", expires: 30});

changer cette ligne en 

$.cookie("nameofcookie", cookievalue, {*Path:* "/", expires: 30});

ce projet fonctionne bien.

3
chaoxfu

Une autre cause possible est le path: "/", puisque vous n'utilisez pas d'URL Web normale, / ne veut probablement pas dire grand chose - essayez sans définir le chemin.

2
Greg

Si vous utilisez chrominum, cette commande permet d'activer les cookies locaux.

navigateur chrome --enable-file-cookies

C'est la même chose pour le chrome

J'espère que cela vous aidera!

0
Elyes Frikha