我有一个使用https协议与服务器通信的Angular Js应用程序。我使用cookie来存储登录用户的名称和jwt令牌。以下是我用来设置Cookie的代码。HTTPS协议上的angularJs应用程序使用HttpOnly标志Cookie
$cookies.putObject('token', token, {
expires: exp,
secure: true
});
为了让我的应用程序从安全团队获得许可,我需要为cookie设置HttpOnly标志。
当我打开我的网站的cookies我看到两个项目
- connect.sid - 不知道该如何被创建的。我没有做任何明确的创建这个cookie的 。
- 令牌 - 这是我创建的cookie来存储用户和他的jwt令牌。
我搜索了一下,做了必要的修改,在这些cookie上设置了HttpOnly标志。它的工作原理,我可以看到两个cookie都有HttpOnly标志检查。但是在这个改变之后,我的身份验证停止了工作(即不能访问cookie内的jwt集)。换句话说,我与后端的沟通被打破了。我使用下面的语句来读取cookie。
$cookies.getObject('token')
我不得不还原一些更改以恢复到以前的状态。现在,connect.sid cookie被设置为HttpOnly标志,而令牌cookie不是。我想知道这里的问题是什么。 Im是Angular Js的新成员,从未从事Cookie管理工作。任何帮助将不胜感激。
我确实为我的令牌cookie从服务器设置了HttpOnly标志。但在此之后,我的代码无法访问它的内容。我想知道这是否是预期的?或者我可能没有阅读饼干“正确的方式” –
是的,这是预期的行为。 HttpOnly Cookie意味着不能被javascript读取。 – Himanshu
谢谢@Himanshu。这有帮助 –