我已经知道的事情:
sessionStorage
在这里找到:我使用的是什么:
实际问题:
脚本(在选项卡之间共享sessionStorage
)在HTTP请求之前在Angular内运行,但是当页面创建HTTP请求时,它使用会话ID(发送到服务器以识别会话)和会话ID应该来自sessionStorage
,但它还没有。
当我打开浏览器的调试器控制台(在新选项卡上)时,sessionStorage
就在那里。因此,当我重新加载这个新标签时,一切正常。 但问题是在 HTTP请求已尝试使用后,sessionStorage
已设置为。
上述链接解决方案在HTTP调用之前真正运行,但事件调用在HTTP调用之后发生。我认为上述链接代码中的特殊sessionStorage_transfer
:
window.addEventListener("storage", sessionStorage_transfer, false);
我存储会话ID如下:
get sid(): string {
return sessionStorage.getItem('user.sid') || '';
}
set sid(value: string) {
sessionStorage.setItem('user.sid', value);
}
所以最终sid
收到了值,但是在HTTP调用已经尝试使用它之后,尽管脚本(共享sessionStorage
)在任何HTTP调用之前开始运行。
(如果没有解决方案,那么我将仅使用sid
的会话cookie,但我希望有人知道这个的解决方案。也许是Promise,Observable,Subject,什么?)
感谢您的解决方案! : - )