【问题标题】:Javascript read session cookies onlyJavascript 仅读取会话 cookie
【发布时间】:2016-05-26 02:36:59
【问题描述】:

我想知道是否存在过滤 cookie 的现有技巧。 我只需要获取会话 cookie 并丢弃另一个。 使用 Javascript 读取 cookie 的常用方法是:

document.cookie

但是,这会打印所有 cookie,我的目标是仅获取会话 cookie。我知道与“普通”cookie 不同,会话 cookie 有一个到期日期。

有人有代码示例来实现此会话 cookie 提取吗?

最好, 亚历山大

【问题讨论】:

  • 了解 cookie here
  • cookie 规范中的任何内容都不允许将 cookie 标记为“会话 cookie”。这只是服务器端应用程序使用的约定。你应该在你最喜欢的搜索引擎中找到无穷无尽的库/函数/sn-ps 来按名称读取 cookie。
  • @JaromandaX 没有回答我的问题。此链接中没有关于如何仅获取会话 cookie 的任何内容。 ;)
  • 当然,但您根本不知道 cookie
  • @ÁlvaroGonzález 我不知道问题所在的 cookie 名称,无论我的 JS 脚本在哪个域上运行,我都想获取会话 cookie。我知道这可能是一种捕获具有过期日期的 cookie 的方法,但是如何呢?

标签: javascript session cookies


【解决方案1】:

“会话 cookie”一个普通的 cookie。它可能(也可能没有)有到期日期,但没有什么能阻止其他 cookie 也有到期日期。识别会话 cookie 的唯一可靠方法是您是否知道其名称(这当然取决于网站,但如果这是 您的 网站则没有问题)。

此外,您无法通过 Javascript 了解 cookie 的到期日期。

现在document.cookie 将所有 cookie 作为分号分隔的字符串提供给您。您只需将其分解为分号即可检索键值对。所以这里有一个示例代码来查找给定名称的 cookie:

var getCookie = function(name) {
    var cookies = document.cookie.split(';');
    for(var i=0 ; i < cookies.length ; ++i) {
        var pair = cookies[i].trim().split('=');
        if(pair[0] == name)
            return pair[1];
    }
    return null;
};

如果您不知道会话 cookie 的名称,那么您就不走运了。时期。您也许可以找到聪明的启发式方法来确定它是哪一个(基于名称和/或值的形式),但是对于所有网站来说,没有什么可以准确地告诉您哪个 cookie 是会话 cookie,以及是否有一个 100% 的信心完全没有。

【讨论】:

  • 感谢您的回复,但正如我在这里解释的那样,问题是我需要脚本在每个网站上都可以工作。 :)
  • @Alexandre - 好吧,你不能。会话 cookie 名称需要是一个参数。
  • 我在最后加了一段话,基本上就是说阿尔瓦罗所说的。
  • @ÁlvaroGonzález 谢谢,我认为这是可能的,这就是我问这个问题的原因,因为我没有找到任何解决方案。 :)
  • 只是为了分享信息:如果您使用此解决方案,请记住为 cookie 禁用 HttpOnly
猜你喜欢
  • 1970-01-01
  • 2012-08-09
  • 2012-07-20
  • 1970-01-01
  • 2012-12-21
  • 1970-01-01
  • 1970-01-01
  • 2014-09-02
  • 2012-01-11
相关资源
最近更新 更多