清除WKWebView的cookie?

时间:2014-10-01 15:26:52

标签: authentication ios8 wkwebview

对于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中加载请求之前执行此操作! :(

2 个答案:

答案 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!