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

时间:2008-12-02 20:06:11

标签: jquery cookies google-chrome

我正在使用jQuery Cookie插件(downloaddemo以及source code with comments)来设置和读取Cookie。我正在本地计算机上开发页面。

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

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

我所知道的

  • 该插件的demo适用于Chrome。
  • 如果我将我的代码放在网络服务器上(地址以http://开头),则可以使用Chrome。

因此,只有对于本地文件上的Google Chrome

可能的原因

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

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

9 个答案:

答案 0 :(得分: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的情况下,这可能是一个更容易的解决方法。

答案 1 :(得分:6)

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

答案 2 :(得分: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");

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

答案 3 :(得分:4)

这为我完成了这项工作:

enter image description here

右键点击Chrome图标,然后选择“属性”,“快捷方式”标签,并在目标路径的最后添加--enable-file-cookies。

答案 4 :(得分:3)

我遇到了同样的问题,请尝试使用localhost的IP地址。例如,“http://127.0.0.1/yoursite/”

答案 5 :(得分:3)

请查看Cookies & Google Analytics

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

将此行更改为

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

这个项目工作正常。

答案 6 :(得分:2)

另一个可能的原因是path: "/",因为您没有使用普通的网址,/可能没什么意义 - 尝试不设置路径。

答案 7 :(得分:0)

如果您使用chrominum,则这是启用本地cookie的命令

  

chromium-browser --enable-file-cookies

对于chrome

来说是一回事

希望这对你有帮助!

答案 8 :(得分:0)

作为解决方法,您可以使用Tampermonkey来访问本地文件(How to include Local htm pages in a Tampermonkey script?) 这样,您将使用Tampermonkey的存储,并能够通过函数GM_getValue(data)和GM_setValue(data)设置和获取数据。我将其用于本地HTML页面,该页面用作Windows资源管理器的可自定义替代

但是实际上localStorage中的Yuri's answer很完美。