2

我目前对使用 WKWebView 显示网页的混合应用程序有疑问。

应用程序重新启动并创建新会话/WKWebWiew 后,Web 服务会为 WKWebView 提供一个新的登录 cookie。这在三分之二的尝试中都可以正常工作,但在某些情况下,登录 cookie 不会存储在 WKWebView (NSHTTPCookieStorage) 使用的共享 cookie 存储中。

(使用与 UIWebview 相同的 web 服务可以正常工作)

我尝试了网络分析工具,我可以看到网络服务正在向我发送新的 cookie。出于某种原因,WKWebView / NSURLRequest 不存储更新的登录 cookie。我读过 WKWebView 似乎会按预定的时间间隔更新 cookie,您可以通过更新 WKProcessPool 来强制它更新,但没有成功。

我一直在尝试使用以下方法从 Web 服务中读取登录 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

然而,它确实给了我很多其他问题......

有没有人有类似的问题或任何意见?

4

0 回答 0