我真的不明白这一点:
我已经在服务器端快速运行,会话已初始化。
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:
我做错了什么?
从角度访问服务器制作的cookie是不可能的吗?
由于
答案 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/