带有HttpOnly标志的Cookie,用于Https协议上的angularJs应用程序

Kav*_*ali 1 cookies https httponly angularjs

我有一个Angular Js应用程序,使用https协议与服务器通信.我使用cookie来存储登录用户的名字和jwt令牌.下面是我用来设置cookie的代码.

    $cookies.putObject('token', token, {
        expires: exp,
        secure: true
      });
Run Code Online (Sandbox Code Playgroud)

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

当我打开我的网站的cookie时,我看到两个项目

  1. connect.sid - 不确定如何创建它.我没有做任何明确的事情来创建这个cookie.
  2. token - 这是我创建的用于存储用户及其jwt令牌的cookie.

我搜索并做了必要的更改,在这些cookie上设置HttpOnly标志.它工作,我可以看到两个cookie都有HttpOnly标志检查.但在此更改后,我的身份验证停止工作(即我无法访问cookie中的jwt集).换句话说,我与后端的沟通被打破了.我使用下面的语句来读取cookie.

$cookies.getObject('token')
Run Code Online (Sandbox Code Playgroud)

我不得不恢复一些改变以恢复到以前的状态.现在,connect.sid cookie设置为HttpOnly标志而令牌cookie不设置.我想知道这里一定是什么问题.我是Angular Js的新手,之前从未参与过Cookie管理.任何帮助将不胜感激.

Him*_*tal 7

一个HttpOnly饼干意味着它不能从脚本语言如JavaScript进行访问.所以在JavaScript中绝对没有API可用于获取/设置cookie的HttpOnly属性,否则会破坏HttpOnly的含义.

只需从服务器设置"令牌"cookie即可.

  • 是的,这是预期的行为.HttpOnly Cookies意味着不能被javascript阅读. (3认同)