【发布时间】:2017-10-27 16:27:16
【问题描述】:
在以下代码中,xsrfCookie有时未定义。我测量了大约 20% 的调用。
这似乎只发生在 MacOS Safari 和 iOS 的 Safari en 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 令牌。
我只能想象这与 GET 中的 XSRF 令牌被异步设置有关,与成功函数并行,但我在 angular.get() 代码中找不到任何暗示这一点的内容。
有人遇到过这个问题吗?
【问题讨论】:
-
在您的第一个请求中,xsrf cookie 将永远不会存在。但在那之后,它会正常存在,因为它会随着这个 req 的响应和未来的进一步请求而重新调整
-
在阅读时尝试暂停一秒钟
-
@Mouneer 谢谢,这就是我做 GET 以创建 XSRF 令牌的原因。在
then之后,我会做一个需要 XSRF 令牌的 POST。 -
@Mudassar 我会试试的,但我想知道为什么需要这样做。
-
@mdworld 对不起,我没有很好地阅读您的代码。另一个可能的原因:您为同一个 api 使用了两个域。例如,有时您使用 localhost,有时您使用您的 IP 地址,例如 192.168.1.100。因此,在一个域上设置的 cookie 将无法被另一个域访问
标签: javascript angularjs cookies safari mobile-safari