【问题标题】:Why does Chrome ignore local jQuery cookies?为什么 Chrome 会忽略本地 jQuery cookie?
【发布时间】:2010-09-25 00:22:32
【问题描述】:

我正在使用 jQuery Cookie 插件(downloaddemosource code with comments)来设置和读取 cookie。我正在我的本地机器上开发页面。

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

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

我所知道的

  • 插件的 demo 可与 Chrome 配合使用。
  • 如果我将代码放在网络服务器上(地址以 http:// 开头),它可以与 Chrome 一起使用。

因此,cookie 仅对本地文件上的谷歌浏览器失败

可能的原因

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

谁能证实这一点并找出根本原因?

【问题讨论】:

  • 当您说演示有效时,您的意思是如果您将其保存到硬盘驱动器并像 file:// 一样访问它?
  • 否 - 只需使用 Chrome 访问上面的链接。

标签: jquery cookies google-chrome


【解决方案1】:

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。所以在本地主机的情况下,这可能是一个更简单的解决方法。

【讨论】:

  • 将域设置为 IP 对我不起作用,但如果我删除域,它会起作用(在本地,我们需要该域进行生产)
  • 在 Mac OSX 上使用 --enable-file-cookies 标志启动 Chrome 使用终端命令:'open /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --args --enable-file-cookies' - (或根据您的 Chrome.app 位置进行调整)
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    我遇到了一些问题并解决了这个糟糕的解决方案。 一起使用 store 和 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");
    

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

    【讨论】:

      【解决方案4】:

      这为我完成了工作:

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

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          【解决方案6】:

          请查看Cookies & Google Analytics

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

          将此行改为

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

          这个项目运行良好。

          【讨论】:

          • 谢谢,将大小写更改为“路径”解决了我的问题
          【解决方案7】:

          另一个可能的原因是path: "/",因为您没有使用普通的网络 URL,/ 可能没有多大意义 - 尝试完全不设置路径。

          【讨论】:

          • 好主意,但无论如何,'/' 是默认值。我试过 'file:///C:/' 但我认为在这种情况下这是无稽之谈。
          【解决方案8】:

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

          chromium-browser --enable-file-cookies

          chrome 也是这样

          希望对您有所帮助!

          【讨论】:

            【解决方案9】:

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

            但实际上来自Yuri's answerlocalStorage 效果很好。

            【讨论】:

              猜你喜欢
              • 2018-08-10
              • 1970-01-01
              • 2014-05-16
              • 2020-08-29
              • 1970-01-01
              • 2018-01-20
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多