javascript - 跨重定向保留 window.opener 属性

标签 javascript redirect

在我的网站上,我在新窗口中打开登录对话框:

window.open('mysite/Login/');

mysite/Login/ 自动将我重定向到 OAuth 提供商。 OAuth 提供程序做了一些骗人的事情,然后使用有效凭据将我重定向回 mysite/Login/

现在是棘手的部分:我想告诉应用程序 (window.opener) 登录已准备就绪。

我尝试在 mysite/Login 中返回以下 HTML:

<html><script> 
    window.opener.MyApp.proceedAfterLogin()
</script></html>

但这会引发错误

Login:2 Uncaught TypeError: Cannot read property 'MyApp' of null

所以window.opener为空。我认为它不是通过重定向保留的;这个假设正确吗?我怎样才能达到同样的结果?

我可以将 JavaScript 对象放入 cookie 中吗? (我不这么认为,cookie只能存储文本,对吧?)

最佳答案

最简单的解决方案是将值存储为 localStorage,然后在 OAuth 完成时检索。

locationStorage.setItem('opener', JSON.stringify(window.opener));

然后,一旦 OAuth 完成,就执行此操作。

window.opener = JSON.parse(locationStorage.opener);

关于javascript - 跨重定向保留 window.opener 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37348377/

相关文章:

javascript - 用户切换浏览器选项卡时的事件

javascript - 从 textNode 获取固定的(带有省略号)textContent

javascript - 遍历类数组Angular4

web-services - 将 Nginx 上的请求从 GET 重写为带有正文的 POST(用于跟踪像素)

post - Rails 3 使用 POST 重定向

apache - 如何在 Apache 中向 302 重定向添加附加 header ?

google-app-engine - 重定向到 Google 应用引擎中的特定 URL

javascript - Html 页面无法加载(Javascript)

javascript - 无法重复使用弹出嵌入的 TinyMCE 编辑器

javascript - 构造并将 JavaScript 字符串列表传递给 ASP.NET MVC Controller 操作(不使用 ajax)