为什么Chrome会忽略本地jQuery Cookie?

Nat*_*ong 81 cookies jquery google-chrome

我使用jQuery Cookie插件(下载演示以及带注释的源代码)来设置和读取cookie.我正在我的本地机器上开发页面.

以下代码将在FireFox 3,IE 7和Safari(PC)中成功设置cookie.但如果浏览器是谷歌浏览器并且该页面是本地文件,则它不起作用.

$.cookie("nameofcookie", cookievalue, {path: "/", expires: 30});
Run Code Online (Sandbox Code Playgroud)

我所知道的:

  • 该插件的演示适用于Chrome.
  • 如果我将我的代码放在网络服务器上(地址以http://开头),它可以与Chrome配合使用.

因此,Cookie仅针对本地文件上的Google Chrome失败.

可能的原因:

  • Google Chrome不接受来自硬盘驱动器网页的Cookie(例如file:/// C:/websites/foo.html)
  • 插件实现中的某些内容会导致Chrome拒绝此类Cookie

任何人都可以确认这一点并确定根本原因吗?

Mat*_*ley 92

Chrome不支持本地文件的Cookie(或者像Peter Lyons所提到的,localhost*),除非您使用--enable-file-cookies标志启动它.您可以在http://code.google.com/p/chromium/issues/detail?id=535上阅读有关该讨论的讨论.

*如果您直接使用本地IP地址(127.0.0.1),Chrome 支持Cookie.所以在localhost的情况下,这可能是一个更容易的解决方法.


小智 6

对于本地应用程序,请在Chrome中使用localStorage:http: //people.w3.org/mike/localstorage.html


小智 5

我有一些问题并解决了这个可怕的解决方案.一起使用商店和cookie插件.

<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");
Run Code Online (Sandbox Code Playgroud)

我知道这不是完美的解决方案,但对我有用


pau*_*dru 5

这为我完成了工作:

在此处输入图片说明

右键单击您的 Chrome 图标并选择“属性”、“快捷方式”选项卡并在目标路径的最后添加 --enable-file-cookies。