gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 04:03:18 33 4
gpt4 key购买 nike

在以下代码中,xsrfCookie有时未定义。我测量过大约 20% 的调用。

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

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

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

我只能想象这与异步设置 GET 中的 XSRF token 有关,与成功函数并行,但我在 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 这样的钩子(Hook)只会在摘要周期完成后运行,但这个调用是多个服务调用的深度,我不明白这是如何涉及的。

关于javascript - 尽管 document.cookie 包含该值,但 $cookies.get() 给出未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46908644/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com