【问题标题】:Cookie with HttpOnly flag for a angularJs application on Https protocol用于 Https 协议上的 angularJs 应用程序的带有 HttpOnly 标志的 Cookie
【发布时间】:2023-04-08 10:21:01
【问题描述】:

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

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

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

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

  1. connect.sid - 不确定它是如何创建的。我不做 任何明确创建此 cookie 的内容。
  2. token - 这是我创建的用于存储用户及其 jwt 令牌的 cookie。

我用谷歌搜索并进行了必要的更改以在这些 cookie 上设置 HttpOnly 标志。它起作用了,我可以看到两个 cookie 都检查了 HttpOnly 标志。但是在此更改之后,我的身份验证停止工作(即我无法访问 cookie 中的 jwt 集)。换句话说,我与后端的通信中断了。我使用下面的语句来读取 cookie。

$cookies.getObject('token')

我必须恢复一些更改才能恢复到以前的状态。现在,connect.sid cookie 设置了 HttpOnly 标志,而令牌 cookie 没有。我想知道这里一定是什么问题。我是 Angular Js 的新手,以前从未从事过 Cookie 管理工作。任何帮助将不胜感激。

【问题讨论】:

    标签: angularjs cookies https httponly


    【解决方案1】:

    HttpOnly cookie 表示无法通过 JavaScript 等脚本语言访问它。所以在 JavaScript 中绝对没有 API 可用于获取/设置 cookie 的 HttpOnly 属性,否则会破坏 HttpOnly 的含义。

    只需从服务器设置您的“令牌”cookie。

    【讨论】:

    • 我确实为来自服务器的令牌 cookie 设置了 HttpOnly 标志。但在那之后,我的 angualrJs 代码无法访问它的内容。我想知道这是否是预期的?或者我可能没有以“正确的方式”阅读 cookie
    • 是的,这是预期的行为。 HttpOnly Cookie 不能被 javascript 读取。
    猜你喜欢
    • 2018-08-29
    • 2011-12-29
    • 2013-04-02
    • 2011-04-09
    • 2012-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-26
    相关资源
    最近更新 更多