[英]Clearing Cookies for WKWebView on iOS 8.4
我正在構建一個使用單點登錄的應用程序,供用戶登錄。用戶輸入成功的ID和密碼后,Web端會返回我抓取並存儲在應用程序中的標題。 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
目錄。 這也行不通。
那種工作的一件事是執行以下操作。 雖然這種方法不允許我獲取標題,因為登錄后需要重定向並且受到干擾(在iOS 9+和8.4中)
req = NSMutableURLRequest(URL: url)
req?.HTTPShouldHandleCookies = false
let webView = WKWebView()
webView.loadRequest(req ?? NSURLRequest(URL: url))
如果這是一個可能的解決方案,我deinit
在我的視圖中刪除我的WKWebView。
這可能是一個遠景,但是如果覆蓋cookie接受政策以在登錄時拒絕所有cookie?
NSHTTPCookieStorage.sharedHTTPCookieStorage().cookieAcceptPolicy = .Never
另一個想法是使用自定義WKProcessPool
子類手動管理cookie(實際上沒有記錄)。 我相信Firefox管理任何cookie問題的方式。
即使你提到它,這是你已經在你的deinit
嘗試過的deinit
嗎?
let storage = NSHTTPCookieStorage.sharedHTTPCookieStorage()
for cookie in storage.cookies! {
storage.deleteCookie(cookie)
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.