javascript - 从 Ionic 2 中的 Cordova InAppBrowser 取回 cookie

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

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

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

最佳答案

是的,这是众所周知的困难,因为域策略和 inAppBrowser 是一个新实例,不允许以前的 Web View 访问它。

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

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

You can even provide a callback to retrieve values from the opened window

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 ] );
        }
    );
});

然后您可以使用返回值将其保存在本地存储

This site provides some great code to help you out.

关于javascript - 从 Ionic 2 中的 Cordova InAppBrowser 取回 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37712824/

相关文章:

javascript - JavaScript 中的函数作用域

javascript - 为什么 ajax loadXml 回调似乎不起作用

javascript - .call(this) JavaScript 中的习语

cordova - 如何添加Ionic2原生按钮点击音效?

ionic-framework - [错误]运行子流程ionic-app-scripts时发生错误

ionic-framework - 使用 Target SDK 版本 30 创建 ionic 3 应用程序,在 google play 控制台中出现错误

javascript - 将元素定位在特定高度

cordova - 如果我只有项目的 www 目录,如何使用 CLI 初始化 Cordova 项目?

javascript - Phonegap Build in iphone exec 错误

vue.js - Ionic 4、Ionicon 库添加自定义图标