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

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

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

console.log(document.cookie);

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

难道是chrome隐藏了javascript的cookie?

【问题讨论】:

    标签: javascript session cookies browser


    【解决方案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 框架
    猜你喜欢
    • 2011-09-07
    • 2016-05-26
    • 2012-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-29
    相关资源
    最近更新 更多