Why does Chrome ignore local jQuery cookies?
JqueryCookiesGoogle ChromeJquery Problem Overview
I am using the jQuery Cookie plugin (http://plugins.jquery.com/project/cookie">download</a> and http://stilbuero.de/jquery/cookie/">demo</a> and http://plugins.jquery.com/files/jquery.cookie.js.txt">source code with comments) to set and read a cookie. I'm developing the page on my local machine.
The following code will successfully set a cookie in FireFox 3, IE 7, and Safari (PC). But if the browser is Google Chrome AND the page is a local file, it does not work.
$.cookie("nameofcookie", cookievalue, {path: "/", expires: 30});
What I know:
- The plugin's http://stilbuero.de/jquery/cookie/">demo</a> works with Chrome.
- If I put my code on a web server (address starting with http://), it works with Chrome.
So the cookie fails only for Google Chrome on local files.
Possible causes:
- Google Chrome doesn't accept cookies from web pages on the hard drive (paths like file:///C:/websites/foo.html)
- Something in the plugin implentation causes Chrome to reject such cookies
Can anyone confirm this and identify the root cause?
Jquery Solutions
Solution 1 - Jquery
Chrome doesn't support cookies for local files (or, like Peter Lyons mentioned, localhost*) unless you start it with the --enable-file-cookies flag. You can read a discussion about it at http://code.google.com/p/chromium/issues/detail?id=535.
*Chrome does support cookies if you use the local IP address (127.0.0.1) directly. so in the localhost case, that could be an easier workaround.
Solution 2 - Jquery
For local applications use localStorage in Chrome instead: http://people.w3.org/mike/localstorage.html
Solution 3 - Jquery
i had some problem and solved it this terrible solution. using store and cookie plugin together.
<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");
I know that this isnt perfect solution but works for me
Solution 4 - Jquery
This did the job for me:
Right click on your Chrome Icon and select Properties, Shortcut tab and add --enable-file-cookies at the last of the target path.
Solution 5 - Jquery
I had the same issue, please try using the IP address of localhost instead. For e.g "http://127.0.0.1/yoursite/"
Solution 6 - Jquery
please check out Cookies & Google Analytics.
$.cookie("nameofcookie", cookievalue, {path: "/", expires: 30});
change this line to
$.cookie("nameofcookie", cookievalue, {*Path:* "/", expires: 30});
this project working is fine.
Solution 7 - Jquery
Another possible cause is the path: "/"
, since you're not using a normal web URL, /
probably doesn't mean much - try without setting the path at all.
Solution 8 - Jquery
If you use chrominum this is the command to enable local cookies
> chromium-browser --enable-file-cookies
It's the same thing for chrome
Hope this help you !
Solution 9 - Jquery
As workaround you can use Tampermonkey with access to local files ( How to include Local htm pages in a Tampermonkey script? ) By that way you will use Tampermonkey's storage, and will be able to set and get your data by functions GM_getValue(data) and GM_setValue(data). I used that for my local HTML page, which i used as customizable alternative to Windows Explorer
But actually localStorage from Yuri's answer works perfect.