【问题标题】:Get cookie back from Cordova InAppBrowser in Ionic 2从 Ionic 2 中的 Cordova InAppBrowser 取回 cookie
【发布时间】:2016-10-09 07:56:50
【问题描述】:

我正在使用 Ionic 2 构建一个移动版本的 Web 应用程序,该应用程序使用 SAML 进行 SSO,并在我的客户端服务器上运行。现在我们有一个 api,当你没有登录网站时会调用它,它会重定向到他们的服务器进行 SSO,然后在你登录时返回到我们的服务器。然后,浏览器有 cookie 来存储用户登录.

我需要获取该 cookie 并以某种方式将其发送到我的 Ionic 应用程序。我知道您不能将来自 InAppBrowser 的 cookie 共享回应用程序,但必须有某种方法可以将其取回。足够多的应用程序使用 Twitter、Facebook 等,我认为我缺少一些简单的东西。

【问题讨论】:

  • 面临同样的问题。您对此有什么解决方案吗?

标签: javascript cordova ionic-framework single-sign-on cordova-plugins


【解决方案1】:

是的,这是出了名的困难,因为域策略和 inAppBrowser 是一个新实例,不允许以前的 Web 视图访问它。

但是有一种方法可以使用 InAppBrowser 的 executeScript() 方法,让您在打开的窗口中执行 JavaScript。

var win = window.open( "http://icenium.com", "_blank", "EnableViewPortScale=yes" );
win.addEventListener( "loadstop", function() {
    win.executeScript({ code: "alert( 'hello' );" });
});

您甚至可以提供回调以从打开的值中检索值 窗口

var win = window.open( "http://icenium.com", "_blank", "EnableViewPortScale=yes" );
win.addEventListener( "loadstop", function() {
    win.executeScript(
        { code: "document.body.innerHTML" },
        function( values ) {
            alert( values[ 0 ] );
        }
    );
});

然后你可以使用返回的值将它保存在local storage

This site provides some great code to help you out.

【讨论】:

  • 这适用于像 document.body.innerHTML 这样不安全的东西。但是它不检索 cookie(代码:“document.cookie”)不返回任何内容
  • 我遇到了与问题中提到的相同的问题,在我的情况下,cookie 在 inappbrowser 和应用程序之间共享,有人对 cookie 有问题吗??
  • @Mac 如何插入一个回显 sessionId 的脚本以及一些如何检索会话 id 的方法,如此处所述telerik.com/blogs/…
猜你喜欢
  • 2016-11-08
  • 1970-01-01
  • 2021-07-02
  • 2021-05-27
  • 1970-01-01
  • 2018-04-03
  • 1970-01-01
  • 2017-05-24
相关资源
最近更新 更多