我有一个场景,我有一个登录页面(稍后将转移到SAML2身份提供程序服务器)。成功验证后,用户将被重定向到另一台服务器(这将托管主应用程序)。
出于测试目的,我在我的localhost上运行了2个nodejs实例(一个在端口8080上,另一个在端口8050上)。在登录应用程序中,我按如下方式设置session / localstroge参数:
on 'http://localhost:8080';
$rootScope.globals = {
currentUser: {
username: username,
authdata: authdata
}
};
...
$window.localStorage.setItem('globals', JSON.stringify($rootScope.globals));
以后成功重定向到:
window.location.href = 'http://localhost:8050';
从这里我想访问会话或localstorage:
console.log($window.localStorage.getItem('globals'));
但变量是' null'。
BTW cookieStore没有问题......
所以我的问题是,当我重定向到另一个url(或者在本例中是localhost的端口)时,是否存在对session / localstorage的限制?
答案 0 :(得分:3)
您不只是将应用程序重定向到另一个URL 您也在更改端口,因此,显然您正在更改应用程序上下文。
由于sessionStorage
或localStorage
与应用程序有关,因此您无法从其他上下文访问它们。
答案 1 :(得分:2)
存储的任何数据都与文档来源相关联,因为它与正在使用的特定协议(http
或https
等),主机(例如html5doctor.com
)和端口(通常/隐式端口80
)。
因此,更改原点的任何部分也会导致更改数据存储上下文。
答案 2 :(得分:1)
这是一个域名问题。构建一个反向代理服务器并隐藏它后面的真实服务器,以便发生以下情况
# Request origin » Actual path
#
localhost/api » localhost:8080/api
localhost/data » localhost:8085/data
现在浏览器只看到localhost
作为主机,您的应用程序应按预期工作。
答案 3 :(得分:0)
由于您从 http://localhost:8080 转到 http://localhost:8050 , 这意味着您正在加载另一个页面/文档。
因此localStorage
无法存储您的数据,因为它使用same-origin
政策来确定对存储数据的访问权限。
答案 4 :(得分:0)
如果将其重定向到不同的节点实例,则会话和本地存储将无法工作,因为它取决于应用程序,在您的情况下,您正在更改重定向的应用程序,因此您的数据将丢失。