繁体   English   中英

尽管document.cookie包含值,但$ cookies.get()给出了未定义的值

[英]$cookies.get() gives undefined although document.cookie contains the value

在以下代码中, xsrfCookie 有时是未定义的。 我估计约有20%的来电。

这似乎只发生在MacOS Safari和Safari en Chrome的iOS中。 我正在使用Angular 1.5.6。

 $http.get('some_url') .success(function() { var xsrfCookie = $cookies.get('XSRF-TOKEN'); }); 

在xsrfCookie之前或之后设置断点并记录document.cookie甚至$cookies.get('XSRF-TOKEN')始终显示预期的XSRF令牌。

我只能想象这与GET中的XSRF令牌有关,它与成功函数并行地异步设置,但是我在angular.get()代码中找不到任何暗示这一点的东西。

有没有人遇到过这个问题?

到目前为止,我已经通过在超时中包装对Cookie的检索来解决了这一问题:

$http.get('some_url')
  .success(function() {
    $timeout(function() {
      var xsrfCookie = $cookies.get('XSRF-TOKEN');
    }, 1);
  });

不幸的是,我无法找到为什么需要这样做(期望它可能与AngularJS 1.5摘要循环有关),但是我确实发现了其他一些东西:

  • 最初的问题仅在部分时间出现在iOS和MacOS上的Safari中。 根据环境(企业内部网,互联网)的不同,但每天都有所不同,我的失败率有时是100%,有时甚至会低到10%。
  • 如果我将document.cookie为成功回调中的第一件事,则它也为空(同样仅在Safari中,有时也是如此)
  • 可能是$timeout仅在摘要完成后才触发,甚至没有毫秒参数的$timeout也可以工作
  • onInit这样的钩子仅在摘要循环完成后才运行,但是此调用是深入的几个服务调用,我不知道这将如何涉及。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM