Warum ignoriert Chrome lokale jQuery-Cookies?

82

Ich verwende das jQuery Cookie-Plugin ( Download und Demo sowie Quellcode mit Kommentaren ), um ein Cookie zu setzen und zu lesen. Ich entwickle die Seite auf meinem lokalen Computer .

Der folgende Code setzt erfolgreich ein Cookie in FireFox 3, IE 7 und Safari (PC). Aber wenn der Browser Google Chrome und die Seite ist eine lokale Datei , funktioniert es nicht.

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

Was ich weiß :

  • Die Demo des Plugins funktioniert mit Chrome.
  • Wenn ich meinen Code auf einen Webserver lege (Adresse beginnend mit http: //), funktioniert er mit Chrome.

Daher schlägt das Cookie nur für Google Chrome in lokalen Dateien fehl .

Mögliche Ursachen :

  • Google Chrome akzeptiert keine Cookies von Webseiten auf der Festplatte (Pfade wie file: /// C: /websites/foo.html).
  • Etwas in der Plugin-Implementierung veranlasst Chrome, solche Cookies abzulehnen

Kann jemand dies bestätigen und die Grundursache identifizieren?

Nathan Long
quelle
Wenn Sie sagen, dass die Demo funktioniert, meinen Sie damit, wenn Sie sie auf Ihrer Festplatte speichern und wie in file: // darauf zugreifen?
Greg
Nein - greifen Sie einfach mit Chrome auf den obigen Link zu.
Nathan Long

Antworten:

93

Chrome unterstützt keine Cookies für lokale Dateien (oder, wie Peter Lyons erwähnt, localhost *), es sei denn, Sie starten es mit dem Flag --enable-file-cookies. Sie können eine Diskussion darüber unter http://code.google.com/p/chromium/issues/detail?id=535 lesen .

* Chrome funktioniert Unterstützung von Cookies , wenn Sie die lokale IP - Adresse (127.0.0.1) direkt verwenden. Im Fall localhost könnte dies eine einfachere Problemumgehung sein.

Matthew Crumley
quelle
Das Festlegen der Domain auf die IP hat bei mir nicht funktioniert, aber es hat funktioniert, wenn ich die Domain entfernt habe (lokal benötigen wir die Domain für die Produktion)
Kyeotic
Um Chrome unter Mac OSX mit dem Flag --enable-file-cookies zu starten, verwenden Sie ein Terminal-Comnad: 'open / Applications / Google \ Chrome.app/Contents/MacOS/Google \ Chrome --args --enable-file-cookies' - (oder optimieren Sie es entsprechend Ihrem Chrome.app-Standort)
Peeech
5

Ich hatte ein Problem und löste es diese schreckliche Lösung. mit Store und Cookie Plugin zusammen.

<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");

Ich weiß, dass dies keine perfekte Lösung ist, aber für mich funktioniert

Serdar Güner
quelle
4

Das hat den Job für mich gemacht:

Geben Sie hier die Bildbeschreibung ein

Klicken Sie mit der rechten Maustaste auf Ihr Chrome-Symbol, wählen Sie Eigenschaften, Registerkarte Verknüpfung und fügen Sie am letzten Pfad des Zielpfads --enable-file-cookies hinzu.

paulalexandru
quelle
3

Ich hatte das gleiche Problem. Bitte versuchen Sie stattdessen, die IP-Adresse von localhost zu verwenden. Zum Beispiel "http://127.0.0.1/yoursite/"

Tiji
quelle
3

Bitte überprüfen Sie Cookies und Google Analytics .

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

Ändern Sie diese Zeile in

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

Dieses Projekt funktioniert in Ordnung.

Chaoxfu
quelle
1
Vielen Dank, ändern Sie den Fall in "Pfad", um mein Problem zu beheben
Otto Kanellis
2

Eine andere mögliche Ursache ist, dass path: "/", da Sie keine normale Web-URL verwenden, dies /wahrscheinlich nicht viel bedeutet - versuchen Sie es, ohne den Pfad festzulegen.

Greg
quelle
Guter Gedanke, aber '/' ist sowieso die Standardeinstellung. Ich habe 'file: /// C: /' ausprobiert, aber ich denke, das ist in diesem Zusammenhang Unsinn.
Nathan Long
0

Wenn Sie chrominum verwenden, ist dies der Befehl zum Aktivieren lokaler Cookies

Chrom-Browser - Enable-File-Cookies

Das gleiche gilt für Chrom

Hoffe das hilft dir!

Elyes Frikha
quelle
0

Um dieses Problem zu umgehen, können Sie Tampermonkey mit Zugriff auf lokale Dateien verwenden ( Wie werden lokale HTML-Seiten in ein Tampermonkey-Skript aufgenommen? ). Auf diese Weise verwenden Sie den Speicher von Tampermonkey und können Ihre Daten über die Funktionen GM_getValue (Daten) und festlegen und abrufen GM_setValue (Daten). Ich habe das für meine lokale HTML-Seite verwendet, die ich als anpassbare Alternative zu Windows Explorer verwendet habe

Aber tatsächlich funktioniert localStorage aus Yuris Antwort perfekt.

Jaroslaw Wally
quelle