我有一个使用 https 协议(protocol)与服务器通信的 Angular Js 应用程序。我使用 cookie 来存储登录的用户名和 jwt token 。下面是我用来设置 cookie 的代码。
$cookies.putObject('token', token, {
expires: exp,
secure: true
});
为了获得安全团队对我的应用程序的许可,我需要为 cookie 设置 HttpOnly 标志。
当我打开我网站的 cookie 时,我看到两个项目
- connect.sid - 不确定它是如何创建的。我没有做 创建此 cookie 的任何明确内容。
- token - 这是我创建的用于存储用户及其 jwt token 的 cookie。
我用谷歌搜索并做了必要的更改以在这些 cookie 上设置 HttpOnly 标志。它起作用了,我可以看到两个 cookie 都检查了 HttpOnly 标志。但是在此更改之后,我的身份验证停止工作(即我无法访问 cookie 中设置的 jwt)。换句话说,我与后端的通信中断了。我使用下面的语句来读取 cookie。
$cookies.getObject('token')
我必须还原一些更改才能回到以前的状态。现在,connect.sid cookie 设置了 HttpOnly 标志,而 token cookie 则没有。我想知道这里一定是什么问题。我是 Angular Js 的新手,之前从未从事过 Cookie 管理工作。任何帮助将不胜感激。
最佳答案
HttpOnly
cookie 意味着无法从 JavaScript 等脚本语言访问它。所以在 JavaScript 中绝对没有可用的 API 来获取/设置 cookie 的 HttpOnly 属性,否则会破坏 HttpOnly 的含义。
只需从服务器设置您的“ token ”cookie。
关于angularjs - 用于 Https 协议(protocol)上的 angularJs 应用程序的带有 HttpOnly 标志的 Cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44307085/