gpt4 book ai didi

ios - 清除 iOS 8.4 上 WKWebView 的 Cookie

转载 作者:技术小花猫 更新时间:2023-10-29 11:08:31 25 4
gpt4 key购买 nike

我正在构建一个使用单点登录的应用程序供用户登录。用户成功输入 ID 和密码后,Web 端会返回 header ,我会获取这些 header 并将其存储在我的应用程序中。 WKWebView 还设置了一个用户成功登录的 cookie。这是我想要避免或撤消的。

我看到的不良行为是,如果我登录一个用户,一切顺利,然后我注销他们并重新登录,WKWebView 认为用户仍然登录并接受他们到不需要的 URL。

在 iOS 9 中,缓解这种情况非常简单:

let config = WKWebViewConfiguration()
config.websiteDataStore = WKWebsiteDataStore.nonPersistentDataStore()

let webView = WKWebView(frame: .zero, configuration: config)

但是在 iOS 8.4 中,确保每次用户进入加载单点登录 URL 时清除 cookie 变得更加复杂。

我尝试过在 NSHTTPCookieStorage.sharedHTTPCookieStorage() 中循环遍历 cookie 并删除它们的方法。不幸的是,cookie 计数为 0。

我还尝试删除 NSFileManager.defaultManager() 中的 /Cookies 目录。这也行不通。

某种程度上起作用的一件事是执行以下操作。尽管这种方法不允许我获取 header ,因为需要在登录后进行重定向,这会造成干扰(在 iOS 9+ 和 8.4 中)

req = NSMutableURLRequest(URL: url)
req?.HTTPShouldHandleCookies = false
let webView = WKWebView()
webView.loadRequest(req ?? NSURLRequest(URL: url))

如果这是一个可能的解决方案,我更愿意在保存我的 WKWebView 的 View 的 deinit 中清除 cookie。

最佳答案

这可能不太可能,但是覆盖 cookie 接受策略以在登录时拒绝所有 cookie 怎么样?

NSHTTPCookieStorage.sharedHTTPCookieStorage().cookieAcceptPolicy = .Never

另一个想法是使用自定义 WKProcessPool 子类(未真正记录)手动管理 cookie。我相信就是这样Firefox管理任何 cookie 问题。

关于ios - 清除 iOS 8.4 上 WKWebView 的 Cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38081744/

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