Authentication 是否清除WKWebView的Cookie?

Authentication 是否清除WKWebView的Cookie?,authentication,ios8,wkwebview,Authentication,Ios8,Wkwebview,对于iOS 8应用程序,我希望将WKWebView用于我正在构建的自定义身份验证ViewController。但是,我似乎不知道如何为WKWebView清除存储的cookies。现在根本不可能吗 我无法控制服务器端,当用户成功登录时,服务将发送看起来像永久(或至少是长寿命)cookie的内容。问题是,如果用户想要更改其登录,那么就不可能了,因为即使用户注销并再次按login,服务器也会使用存储的cookie自动重定向并重新登录 开放的想法和建议,谢谢 在UIWebView中,清除存储的Cooki

对于iOS 8应用程序,我希望将
WKWebView
用于我正在构建的自定义身份验证ViewController。但是,我似乎不知道如何为
WKWebView
清除存储的cookies。现在根本不可能吗

我无法控制服务器端,当用户成功登录时,服务将发送看起来像永久(或至少是长寿命)cookie的内容。问题是,如果用户想要更改其登录,那么就不可能了,因为即使用户注销并再次按login,服务器也会使用存储的cookie自动重定向并重新登录

开放的想法和建议,谢谢

UIWebView
中,清除存储的Cookie非常简单,您只需执行以下操作:

NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (NSHTTPCookie *cookie in [storage cookies])
{
    [storage deleteCookie:cookie];
}

但是,
WKWebView
似乎没有使用nshttpookie存储,因为在
WKWebView
中加载请求之前,我已经尝试过这样做了:(

苹果内部论坛向我提供了答案:使用可变NSURLRequest,并将HTTPShouldHandleCookies设置为NO:

let req: NSMutableURLRequest = NSMutableURLRequest(URL:openURL)
req.HTTPShouldHandleCookies = false
webView.loadRequest(req)

没有向网站发送Cookie,因此您每次都会看到登录屏幕(用于测试)。

似乎iOS 8.2中正在使用
NSHTTPCookieStorage
,以根据需要正确清除Cookie。我已经发布了一个应用程序,该应用程序将在打开基于
WKWebView
的登录之前运行此代码:

NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (NSHTTPCookie *cookie in [storage cookies])
{
    [storage deleteCookie:cookie];
}
在iOS 8.2之前,网站会使用保存的Cookie自动登录,现在它会正确地要求用户重新登录。所有这些都是在我不向应用程序发送更新的情况下发生的。:)


谢谢你的提醒@jackreichert

我刚刚在iOS/Web技术论坛上问了同样的问题!同样的问题-要进行测试,唯一的解决方法是在每次测试后擦除模拟器。去年夏天,我发现NSHTTPookie存储没有任何用处。不确定你是否能看到删除的答案,有人发布了一个答案,然后删除了一个他们建议使用Javascript擦除cookies的答案。我将尝试一下,如果它起作用,我将更新此线程。我尝试过多次尝试使用JavaScript注入删除(过期)所有cookie,但始终无法使其起作用。我使用的是wkwebview,您的代码对我有效。有可能他们在wkwebview中添加了NSHTTPookies。我确实是先把它转换成swift的,但这不应该有什么区别。它看起来像是完全禁用了cookies!当我使用set
request.HTTPShouldHandleCookies=NO相关服务检测到此情况,在成功登录后,不提供令牌。相反,它会给出一个错误:“无法加载此页面。如果您的浏览器中禁用了cookie,或者您正在私人模式下浏览,请尝试启用cookie或关闭私人模式,然后重试您的操作。”@DhirajGupta您还可以在请求中设置cookie字符串,如果您能够确定发送什么。