Zac*_*iro 10 cookies uiwebview nsmutableurlrequest ios wkwebview
我正在构建一个使用单点登录的应用程序,供用户登录.用户输入成功的ID和密码后,Web端会返回我抓取并存储在应用程序中的标题.WKWebView还设置用户成功登录的cookie.这是我想要避免或撤消的.
我看到的不受欢迎的行为是,如果我登录用户,一切顺利,然后我将它们注销并再次重新登录,WKWebView认为用户仍然登录并将他们带到了一个不受欢迎的行为URL.
在iOS 9中,缓解这一点非常简单:
let config = WKWebViewConfiguration()
config.websiteDataStore = WKWebsiteDataStore.nonPersistentDataStore()
let webView = WKWebView(frame: .zero, configuration: config)
Run Code Online (Sandbox Code Playgroud)
但是在iOS 8.4中,确保每次用户进入加载单点登录URL时cookie都是清晰的.
我尝试过循环访问cookie NSHTTPCookieStorage.sharedHTTPCookieStorage()
并删除它们的方法.不幸的是,cookie计数为0.
我也尝试删除/Cookies
目录NSFileManager.defaultManager()
.这也行不通.
一件事情,就是那种工作是做以下.虽然这种方法不允许我获取标题,因为登录后需要重定向并且受到干扰(在iOS 9+和8.4中)
req = NSMutableURLRequest(URL: url)
req?.HTTPShouldHandleCookies = false
let webView = WKWebView()
webView.loadRequest(req ?? NSURLRequest(URL: url))
Run Code Online (Sandbox Code Playgroud)
deinit
如果这是一个可能的解决方案,我宁愿在我的视图中清除包含我的WKWebView的cookie.
这可能不太可能,但是在登录时覆盖 cookie 接受策略以拒绝所有 cookie 又如何呢?
NSHTTPCookieStorage.sharedHTTPCookieStorage().cookieAcceptPolicy = .Never
Run Code Online (Sandbox Code Playgroud)
WKProcessPool
另一个想法是使用自定义子类(没有真正记录)手动管理 cookie 。我相信这就是Firefox管理任何 cookie 问题的方式。
归档时间: |
|
查看次数: |
887 次 |
最近记录: |