gpt4 book ai didi

ios - 在 inappbrowser iOS 10(clearcache=no;)中缓存 Cookies 在应用程序重启时不起作用 - Cordova/Ionic

转载 作者:可可西里 更新时间:2023-11-01 03:55:38 24 4
gpt4 key购买 nike

我在 ionic iOS 应用程序中遇到一个问题,我的网站没有保存 cookie,清除缓存和清除 session 缓存都不起作用。我正在使用 Cordova Inappbrowser 插件。

在 Android 中,它运行完美。

var ref = window.open(url, '_blank','location=no,toolbar=yes,clearcache=no,clearsessioncache=no');

但是,在 iOS 中,它不起作用。当我首先提供我的凭据并进入应用程序然后退出应用程序并重新打开它时,它再次询问我的凭据(这在 ANDROID 中完美运行)

进一步挖掘后,我发现本应保存的 cookie 被标记为 isSessionOnly=true 和 expires=null

因此,我可以在 session 中看到 cookie,但在关闭应用程序时会被清除

我通过在 CDVinAppbrowser.m 类中编写以下代码找到了我的结果:

- (void)openInInAppBrowser:(NSURL*)url withOptions:(NSString*)options
{
NSHTTPCookie *cookie;
NSHTTPCookieStorage *cookieJar = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (cookie in [cookieJar cookies]) {
NSLog(@"%@", cookie);
}

那么,如何在 iOS 中使用 clearcache=no 和 clearsessioncache=no 保存 cookie 或使用选项制作 inappbrowser。

注意:我是 iOS/Swift 的新手。所以,我需要知道将代码放在 swift 类中的什么位置。

赏金编辑(由 AndroidMechanic 提供)

我遇到了完全相同的问题,它在 Android 上完美运行,但在 iOS 上,每次应用重新启动时它都会要求提供凭据。我悬赏一个可以避免使用 native 代码的解决方案。

最佳答案

详细说明@Sourav Das 的回答,以便它可能对其他人有用。

如果您的身份验证方案仅基于 SAML,您别无选择,只能依赖身份提供商设置的 cookie。

IdP 设置的 cookie 通常是没有任何有效期的 sessionOnly cookie。 Android WebView 在应用程序重启(终止和重新打开)之间将这些 sessionOnly cookie 与其他 cookie(即具有到期日期)一起保存,但基于 iOS 的 WebView 不保存 sessionOnly cookie。 iOS 中仅保存有过期日期的 cookie。

如果 iOS 应用程序开发人员的意图是在应用程序重新启动之间保留 sessionOnly cookie - 有两种方法可以做到这一点。

  1. 根据 https://stackoverflow.com/a/5938927/6243 中的逻辑实现自定义 cordova 插件

  2. 使用 Cookie Emperor plugin如果您知道将设置 sessionOnly cookie 的确切名称。您可以在 JavaScript 层使用此插件进行读/写,而不用处理 native iOS 代码。

关于ios - 在 inappbrowser iOS 10(clearcache=no;)中缓存 Cookies 在应用程序重启时不起作用 - Cordova/Ionic,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42057761/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com