Javascript:从 cookie 中读取会话 ID

Posted

技术标签:

【中文标题】Javascript:从 cookie 中读取会话 ID【英文标题】:Javascript: Read out session id from cookie 【发布时间】:2012-08-09 02:24:07 【问题描述】:

对于 websockets,我必须从 cookie 中公开我的 sessionid。

我搜索了一下,发现应该可以通过以下方式访问cookies:

console.log(document.cookie);

不幸的是,这不起作用或更好的 document.cookie 包含一个空字符串,即使 chrome 本身向我显示 cookie 也可以进行身份​​验证。

难道是chrome隐藏了javascript的cookie?

【问题讨论】:

【参考方案1】:

如果服务器配置为使用the HttpOnly flag 发送会话cookie,就会发生这种情况。这样,cookie 就变得对 JS 等客户端脚本语言不可见/不可访问。

要实现您的具体功能要求,要么重新配置服务器以不这样做,要么寻找替代方法,例如设置一个自定义 cookie(当然没有 HttpOnly 标志),或者让服务器端视图技术将当前会话 ID 动态打印为 JS 变量或某个 html 元素的属性,以便 JS 可以通过遍历HTML DOM。

【讨论】:

嗨,我需要一些时间来找出为什么 cookie: httpOnly: false 在 express 中不起作用。但是,您的回答听起来很合乎逻辑。将 httpOnly 标志更改为 false 有什么缺点吗? 您可以在同一个 Chrome cookie 表中确认它是否真的是 HttpOnly。至于服务器配置,请随时提出一个新问题。我至少从未听说过“快速”服务器。至于缺点,它只会增加 XSS 攻击成功的风险,但如果在重新显示期间正确地对任何用户控制的数据进行 HTML 转义,则无需害怕。 好的。我只需要知道。 Byside express 是一个类似 senetra (RoR) 的 node.js 框架

以上是关于Javascript:从 cookie 中读取会话 ID的主要内容,如果未能解决你的问题,请参考以下文章

2018-09-08Cookie的发送和Cookie的读取+Session基本原理

在 PHP 中删除 JavaScript 会话 Cookie [重复]

Codeigniter在nodejs中读取会话cookie

如何获取会话 cookie

javaScript中的Cookie和web Storage(LocalStorage-SessionStorage)详解

javaScript中的Cookie和web Storage(LocalStorage-SessionStorage)详解