2017-06-01 74 views
1

我有一个使用https协议与服务器通信的Angular Js应用程序。我使用cookie来存储登录用户的名称和jwt令牌。以下是我用来设置Cookie的代码。HTTPS协议上的angularJs应用程序使用HttpOnly标志Cookie

$cookies.putObject('token', token, { 
     expires: exp, 
     secure: true 
     }); 

为了让我的应用程序从安全团队获得许可,我需要为cookie设置HttpOnly标志。

当我打开我的网站的cookies我看到两个项目

  1. connect.sid - 不知道该如何被创建的。我没有做任何明确的创建这个cookie的 。
  2. 令牌 - 这是我创建的cookie来存储用户和他的jwt令牌。

我搜索了一下,做了必要的修改,在这些cookie上设置了HttpOnly标志。它的工作原理,我可以看到两个cookie都有HttpOnly标志检查。但是在这个改变之后,我的身份验证停止了工作(即不能访问cookie内的jwt集)。换句话说,我与后端的沟通被打破了。我使用下面的语句来读取cookie。

$cookies.getObject('token') 

我不得不还原一些更改以恢复到以前的状态。现在,connect.sid cookie被设置为HttpOnly标志,而令牌cookie不是。我想知道这里的问题是什么。 Im是Angular Js的新成员,从​​未从事Cookie管理工作。任何帮助将不胜感激。

回答

3

A HttpOnly Cookie意味着它无法从JavaScript等脚本语言访问。所以在JavaScript中绝对没有可用的API来获取/设置cookie的HttpOnly属性,否则将会破坏HttpOnly的含义。

只需从服务器设置您的'令牌'cookie即可。

+0

我确实为我的令牌cookie从服务器设置了HttpOnly标志。但在此之后,我的代码无法访问它的内容。我想知道这是否是预期的?或者我可能没有阅读饼干“正确的方式” –

+1

是的,这是预期的行为。 HttpOnly Cookie意味着不能被javascript读取。 – Himanshu

+0

谢谢@Himanshu。这有帮助 –

相关问题