【问题标题】:How to get cookie's path using javascript如何使用 javascript 获取 cookie 的路径
【发布时间】:2015-12-11 08:10:03
【问题描述】:

我设置的 Cookie js 函数

function setCookie(name, value, expires, path){
    cookieStr = name + "=" + escape(value) + "; ";

    if(expires){
        expires = setExpiration(expires);
        cookieStr += "expires=" + expires + "; ";
    }
    if(path){
        cookieStr += "path=" + path + "; ";
    }
    document.cookie = cookieStr;
}

当我创建一个 cookie 时,

 setCookie('MyCookie','cookieName',3,'/Members')

如何获取cookie的路径?

【问题讨论】:

  • 你为什么还需要路径?
  • 不知道他,但我需要它,因为我有多个同名的 cookie 可用于我需要通过路径区分的文档。
  • @YairNevet 我有一个类似的要求,我需要清除重复的 cookie。存在重复项,因为它们在设置时具有不同的路径。

标签: javascript cookies


【解决方案1】:

TL:DR; 您无法使用 javascript 读取基于路径的 cookie。

在 JavaScript 中,只能使用内部对象 document.cookies 设置或获取 cookie。 该对象的内容将是一串由 non-httpOnly cookie 名称和由; 分隔的值。差不多就是这样。

您无法追踪到PathDomaincookies 的其他属性,因为它们只能被浏览器读取,而不会显示给 JavaScript。

另一方面,如果您使用任何形式的 AJAX,您可以尝试通过 xhr.getResponseHeader("Set-Cookie") 拦截和解析请求标头,并根据需要将值存储在 localStoragesessionStorage 中。我仍然建议你,这不是一个好主意。一些浏览器可能会将Set-Cookie 标头视为javascript 读取的禁止标头之一。但我认为该限制仅适用于httpOnly cookie。

【讨论】:

  • 事情可能已经改变,现在有browser.cookies.getAll(),它确实在一个可消化的对象中提供了path...但是,访问这个 API(在兼容的浏览器中)确实需要设置一个 manifest.webmanifest 文件。并且支持 support 这种幻想的浏览器以不同的方式这样做,然后需要另一个依赖项(shim)......localStoragesessionStorage 似乎更容易。
猜你喜欢
  • 1970-01-01
  • 2017-10-19
  • 1970-01-01
  • 1970-01-01
  • 2022-01-19
  • 2017-11-29
  • 2019-08-31
  • 1970-01-01
  • 2013-08-03
相关资源
最近更新 更多