对于iOS 8应用程序,我想使用WKWebView
来构建我正在构建的自定义身份验证ViewController。但是,我似乎无法弄清楚如何清除WKWebView
存储的Cookie。现在根本不可能吗?
我无法控制服务器端,并且当用户成功登录时,该服务正在发送看起来像永久(或至少长期)cookie的cookie。问题是,如果用户想要更改他们的登录,那么就变得不可能了,因为即使用户退出并再次按下登录,服务器也会自动使用存储的cookie重定向并将其记录回来试。
愿意接受意见和建议,谢谢!
在UIWebView
中清除存储的Cookie很简单,您只需要这样做:
NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (NSHTTPCookie *cookie in [storage cookies])
{
[storage deleteCookie:cookie];
}
但是,WKWebView
似乎没有使用NSHTTPCookieStorage,因为我已经尝试在WKWebView
中加载请求之前执行此操作! :(
答案 0 :(得分:5)
答案在Apple内部论坛上提供给我:使用可变的NSURLRequest,并将HTTPShouldHandleCookies
设置为NO:
let req: NSMutableURLRequest = NSMutableURLRequest(URL:openURL)
req.HTTPShouldHandleCookies = false
webView.loadRequest(req)
没有cookie发送到网站,因此您每次都会获得登录屏幕(用于测试)。
答案 1 :(得分:5)
似乎NSHTTPCookieStorage
现在 在iOS 8.2中用于正确清除Cookie,视需要而定。我已经发布了一个应用程序,可以在打开WKWebView
登录之前运行此代码:
NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (NSHTTPCookie *cookie in [storage cookies])
{
[storage deleteCookie:cookie];
}
在iOS 8.2之前,网站会使用保存的cookie自动登录,现在它正确地要求用户重新登录。所有这一切都发生在我没有发布应用程序的更新。 :)
感谢单挑@jackreichert!