Cordova InAppBrowser 和与 webview 共享的 cookie

Posted

技术标签:

【中文标题】Cordova InAppBrowser 和与 webview 共享的 cookie【英文标题】:Cordova InAppBrowser and shared cookie with webview 【发布时间】:2015-04-22 23:23:28 【问题描述】:

显然,在 android 上使用 _blank 时,InAppBrowser 不会存储当前会话 cookie。为了使这成为可能,我是否缺少一些设置?它似乎在 ios 上完美运行,并且在排除故障时有点令人沮丧。当来自 oAuth 的回调发生并且我的服务器读取并分配当前会话所需的数据时,cookie 需要在那里。

我尝试过的...

1) Adding CookieManager to android Childbrowser(旧的,我知道)

2) target = _self 实际上会将cookie发送到服务器,但是打开的弹窗会在身份验证后关闭整个应用程序(而不是弹窗),必须手动重新打开

3) 更改各种 WebView 属性和设置无济于事。

【问题讨论】:

【参考方案1】:

在深入研究我的问题后,我发现 InAppBrowser 使用正常的 webview,而我的应用程序使用 Crosswalk webview 运行,因此两者变得脱节。

我现在通过移除 Crosswalk 解决了这个问题。

如果有人好奇的话,我的项目使用的是带有 Ionic Crosswalk 浏览器的 Ionic#1.3.11。

如果有人对 Crosswalk 中的 cookie 问题有任何建议或解决方法,我们将不胜感激。

【讨论】:

我在 iOS 10 中遇到了同样的问题。你能在 iOS 中解决吗 Cookies 并不是与 Cordova/Phonegap 一起使用的最佳选择。我早就改用 JSON Web Tokens 和 localStorage。【参考方案2】:

Crosswalk 似乎阻止您将 cookie 传递到 Android 设备上的 inAppBrowser。经过大量挖掘后,我找到了有关该问题的论坛讨论和可能的解决方案:

https://forum.ionicframework.com/t/crosswalk-and-inappbrowser/25139

https://github.com/Shoety/cordova-plugin-inappbrowserxwalk

我们的团队尚未对此进行测试/实施,但看起来很有希望。

【讨论】:

虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review 我只是想帮忙。以后我会记住这一点,但如果这篇文章被删除,那么最初提出问题的人可能不再有可能解决他的问题。

以上是关于Cordova InAppBrowser 和与 webview 共享的 cookie的主要内容,如果未能解决你的问题,请参考以下文章

cordova插件新的窗口实例打开连接: cordova-plugin-inappbrowser

Cordova/PhoneGap 打开下载的文件 (InAppBrowser)

[Cordova inAppBrowser 在App内打开浏览器]

如何在cordova项目中异步打开inappbrowser

Cordova InAppBrowser立即关闭iOS 13

Cordova iOS - inAppBrowser 未按预期工作