我目前在使用WKWebView显示网页的混合应用程序时遇到问题。
应用程序重新启动并创建新会话/ WKWebWiew后,将从Web服务向WKWebView提供新的登录cookie。这在三次尝试中有两次正常工作,但在某些情况下,登录cookie不会存储在WKWebView(NSHTTPCookieStorage)使用的共享cookie存储中。
(使用与UIWebview相同的web服务工作正常)
我尝试过网络分析工具,我可以看到网络服务正在向我发送新的cookie。由于某种原因,WKWebView / NSURLRequest不存储更新的登录cookie。我已经读过WKWebView似乎按计划的时间间隔更新了cookie,你可以通过更新WKProcessPool强制它更新,但没有成功。
我一直在尝试使用以下方式从网络服务中读取登录cookie:
- (void)webView:(WKWebView *)webView decidePolicyForNavigationResponse:(WKNavigationResponse *)navigationResponse decisionHandler:(void (^)(WKNavigationResponsePolicy))decisionHandler {
...
NSHTTPURLResponse *urlResponse = (NSHTTPURLResponse *)navigationResponse.response;
NSArray *cookies = [NSHTTPCookie cookiesWithResponseHeaderFields:urlResponse.allHeaderFields forURL:urlResponse.URL];
...
但由于某种原因,会话cookie /登录cookie在标题中不可见,我的猜测是由于某种原因它被NSURL隐藏,因为我可以看到它们,如果我通过设置关闭自动Cookie处理:
<NSMutableURLRequest>.HTTPShouldHandleCookies
然而,它确实给了我很多其他问题......
有没有人有类似的问题或任何意见?