39

我有以下目录树:

+ folder1
|--- folder2
|------ page1.html
|--- page2.html

如果我在page1.html使用 JavaScript 时设置了一些 cookie,该 cookie 使用的路径是什么?

编辑:
让我更好地解释一下。我正在使用本地文件。page1.html正在通过/home/user/.../folder1/folder2/page1.html而不是通过使用 HTTP 服务器的客户端计算机进行访问。

澄清一下:
似乎某些浏览器(如 Chrome)在使用时不存储 cookie file:///,但 Firefox 和 Internet Explorer 都存储。

4

6 回答 6

23

MDC 页面获取document.cookie

如果未指定,[path参数] 默认为当前文档位置的当前路径。

所以在你的情况下,它将是/folder1/folder2/.


我最初没有看到您在问题标题中指定了“本地” - 不确定在我写答案时这是否已更新。使用协议浏览时不会设置 Cookie file:///,具体取决于浏览器。

于 2011-06-03T20:32:19.137 回答
22

浏览器不会为file://url 协议存储 cookie,它会简单地默默地设置任何东西。因此,如果这是真正的“本地”而不是在域上,那么您可能会遇到问题。

于 2011-06-03T20:32:22.657 回答
11

如果您使用的是 Mac,则可以关闭 Chrome 并重新启动它,如下所示:

/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --enable-file-cookies

然后,您就可以在本地文件上设置 cookie。

于 2013-06-12T18:52:54.007 回答
5

为 chrome 设置 --enable-file-cookies ,它应该适合你。此外,您还必须设置“接受所有 cookie”才能使某些功能正常工作,但如果这样做,请确保在重新联机之前设置回去。

于 2011-11-18T10:00:43.090 回答
0

作为解决方法,您可以使用 Tampermonkey 访问本地文件(如何在 Tampermonkey 脚本中包含本地 htm 页面?)通过这种方式,您将使用 Tampermonkey 的存储,并且能够通过函数 GM_getValue(data) 和GM_setValue(数据)。我将它用于我的本地 HTML 页面,我将其用作 Windows 资源管理器的可定制替代品

于 2020-03-30T14:39:30.323 回答
0

对于仍在寻找方法的人,请尝试设置 URL 参数而不是 cookie

我已经下载了一些 HTML 格式的小说以供离线阅读,并且无法使用 cookie 将先前设置的字体大小传递给下一章,所以我所做的如下所示:

  1. 首先添加一个寡妇事件侦听器,该侦听器在单击链接(到下一个通道)时添加字体大小参数
  2. 然后是 window.onload 函数,它接受参数值并更改字体大小

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    <a href="ch-02.html" >Next Chapter</a>
    <p id="content">Hope this helps</p>
    
<script>
var fontSize = 1;
window.addEventListener("click", function(e) {
    var href = e.target.getAttribute("href");
    if(href) {
        location.href = href + "?fontSize=" + fontSize;
        e.preventDefault();
     }
})
window.onload = function(){
  var url = new URL(window.location.href);
  var value = url.searchParams.get("fontSize");
  if(value != null){
    fontSize = parseFloat(value);
    document.getElementById("content").style.fontSize = fontSize + "em";
  }
}
</script>
    
  </body>
</html>

于 2021-05-05T11:11:34.370 回答