Express Session + Angular:无法访问connect.sid cookie

时间:2013-03-08 16:10:46

标签: node.js cookies angularjs express

我真的不明白这一点:

我已经在服务器端快速运行,会话已初始化。

app.use(express.session({
    secret: 'mySecret'
    })
}));

正如本文Confusion over session IDs using Connect中所提到的,它会向任何请求发送connect.sid cookie。

在客户端,我想阅读这个cookie的内容,感觉不可能:

angular.module('myApp.controllers', ['ngCookies','myApp.services'])
.controller('homeCtrl', function($scope, $cookies) {
    $cookies['test']='myValue';
    console.log($cookies);
});

当我运行此操作时,我在日志中获取此对象:Object {test: "myValue"},而如果我转到Chrome调试器中的ressources选项卡,我可以看到两个Cookie:

Screenshot of Ressources tab in chrome debugger

我做错了什么?

从角度访问服务器制作的cookie是不可能的吗?

由于

2 个答案:

答案 0 :(得分:14)

默认情况下,connect session使用httpOnly cookie(look here)。

设置httpOnly标志时,始终禁止读取cookie。

尝试禁用httpOnly标志:

app.use(express.session({
    secret: 'mySecret',
    cookie: { httpOnly: false }
}));

答案 1 :(得分:6)

小心你没有解决一个问题,而是创造另一个问题,而且更糟糕的问题。 httpOnly标志通常用于防御XSS攻击。有关详细信息,请参阅OWASP上的此链接:https://www.owasp.org/index.php/HttpOnly

有关这方面的有趣故事:http://blog.codinghorror.com/protecting-your-cookies-httponly/