2012-08-12 78 views
3

用于websockets我必须从cookie中公开我的sessionid。Javascript:从cookie中读出会话ID

我寻觅了一下,发现我应该能够访问饼干:

console.log(document.cookie); 

不幸的是,这并不工作或更好的document.cookie包含一个空字符串甚至镀本身就说明了我的饼干也认证工程。

铬可以隐藏cookie的JavaScript吗?

回答

6

如果将服务器配置为发送会话cookie为the HttpOnly flag,则会发生这种情况。通过这种方式,Cookie变得对JS等客户端脚本语言不可见/不可访问。

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

+0

嗨,我需要一些时间来寻找为什么cookie:{httpOnly:false}不能在express中工作。然而你的回答听起来很合理将httpOnly标志更改为false有什么缺点吗? – bodokaiser 2012-08-12 18:07:14

+0

你可以在同一个Chrome cookies表中确认它是否真的是'HttpOnly'。至于服务器配置,请随时提出一个新问题。我至少从来没有听说过“快递”服务器。至于缺点,它只会增加成功的XSS攻击的风险,但如果您在重新显示期间正确地HTML转义任何用户控制的数据,则无需担心。 – BalusC 2012-08-12 18:11:27

+0

好的。我需要知道的一切。 Byside express是一个类似于node.js的senetra(RoR)框架 – bodokaiser 2012-08-12 18:19:54