Ale*_*lex 95
眼下,WKWebView情况下,将忽略任何默认网络存储器(NSURLCache,NSHTTPCookieStorage,NSCredentialStorage),你也可以使用自定义的网络请求的标准网络类(NSURLProtocol等).
所以WKWebView实例的cookie不存储在您的应用程序的标准的Cookie存储等NSURLSession/NSURLConnection的只使用标准的Cookie存储有WKWebView的饼干没有访问(和准确这可能是你有问题: "登录状态"很可能存储在cookie中,但NSURLSession/NSURLConnection将不会看到cookie.
对于缓存,凭证等也是如此.WKWebView有自己的私有存储,因此不能很好地使用标准的Cocoa网络类.
您也无法自定义请求(添加自己的自定义HTTP标头,修改现有标头等),使用您自己的自定义URL方案等,因为WKWebView也不支持NSURLProtocol.
所以现在WKWebView对许多应用程序来说都没用,因为它不参与Cocoa的标准网络API.
我仍然希望Apple能够在iOS 8发布之前对其进行更改,因为否则WKWebView对于许多应用程序来说都是无用的,而且我们可能会更长时间地使用UIWebView.
因此,向Apple发送错误报告,以便Apple知道这些问题是严重的,需要修复.
小智 15
您是否检查了从请求中返回的响应cookie.您可以使用这样的委托方法.
- (void)webView:(WKWebView *)webView decidePolicyForNavigationResponse:(WKNavigationResponse *)navigationResponse decisionHandler:(void (^)(WKNavigationResponsePolicy))decisionHandler{
NSHTTPURLResponse *response = (NSHTTPURLResponse *)navigationResponse.response;
NSArray *cookies =[NSHTTPCookie cookiesWithResponseHeaderFields:[response allHeaderFields] forURL:response.URL];
for (NSHTTPCookie *cookie in cookies) {
[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookie];
}
decisionHandler(WKNavigationResponsePolicyAllow);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
21359 次 |
最近记录: |