【问题标题】:AngularJS: Can not read session valueAngularJS:无法读取会话值
【发布时间】:2013-09-15 16:23:01
【问题描述】:
  • 会话由服务器在用户登录时设置

我想在我的angular 前端检索这个值,但它显示undefined

相关代码是

   $scope.logout = function () {
        console.log('session value', $cookieStore.get('session'));
    }

而且我的应用也被配置为包含ngCookies

var app = angular.module('myApp', ['ngCookies']);

当我运行我的应用程序时,我看到了

session value undefined 

不过,我可以在Chrome Dev Tools 中查看会话

我错过了什么?

【问题讨论】:

    标签: session angularjs


    【解决方案1】:

    我错过了什么?

    服务器将 cookie 设置为会话 cookie(HttpOnly 标志)。这意味着您无法在客户端访问此 cookie。客户端将在每次请求时将 cookie 发送到服务器,但客户端无法访问其值。这就是HttpOnly cookie 的定义。如果您希望能够在客户端访问此 cookie 值,则应修改服务器端脚本,以便在设置 cookie 时不会将 HttpOnly 标志附加到它。显然,这带有相应的免责声明,说明您可能会在您的网站上打开安全漏洞,具体取决于存储在此 cookie 中的目的和特定值。

    【讨论】:

    • 如果我想删除这个会话怎么办,因为这样我可以注销我的用户,你对此有什么想法吗?另外,非常感谢,因为我今天学到了一些新东西
    • 正如我在回答中解释的那样,您不能使用 javascript 访问在服务器上使用 HttpOnly 标志设置的 cookie。这就是这些cookies的定义。只有服务器可以访问它们。因此,您应该修改服务器端脚本,使其不发出带有 HttpOnly 标志的 cookie,或者向服务器发送 AJAX 请求,服务器将负责删除 cookie 值以注销用户。
    • 老兄,我爱你。我正在挠头,正要敲我的笔记本电脑。从过去的 1 周开始,我一直在研究这个问题,但无法弄清楚。他们都没有给出完美的答案。你是男神!!干杯。我在后端使用 Django,在那里,'SESSION_COOKIE_HTTPONLY = True'。我想通了。
    • 我正在努力解决同样的问题@DarinDimitrov。谢谢。你的回答很有启发性。但有一件事我不明白。当我在终端上使用 CURL 发布用户数据时,它会响应会话值,例如 Set-Cookie: session=.eJwdjsGKwjAURX9leGs ... 如果您如何解释,我会很高兴? curl 请求响应会话数据,但 http 请求不响应。
    【解决方案2】:

    更新

    值得注意的是,$cookieStore 已被弃用,现在要访问 cookie,应该使用 ngCookies(请参阅ngCookies)。

    【讨论】:

      猜你喜欢
      • 2016-03-11
      • 1970-01-01
      • 2017-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-19
      相关资源
      最近更新 更多