@@ -61,19 +61,21 @@ - (void)webView:(WKWebView *)webView startURLSchemeTask:(id <WKURLSchemeTask>)ur
6161
6262 // set cookies to WKWebView
6363 NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;
64- NSArray * cookies = [NSHTTPCookie cookiesWithResponseHeaderFields: [httpResponse allHeaderFields ] forURL: response.URL];
65- [[NSHTTPCookieStorage sharedHTTPCookieStorage ] setCookies: cookies forURL: httpResponse.URL mainDocumentURL: nil ];
66- cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage ] cookies ];
67-
68- for (NSHTTPCookie * c in cookies)
69- {
70- dispatch_async (dispatch_get_global_queue ( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0 ), ^(void ){
71- // running in background thread is necessary because setCookie otherwise fails
72- dispatch_async (dispatch_get_main_queue (), ^(void ){
73- [cookieStore setCookie: c completionHandler: nil ];
64+ if (httpResponse) {
65+ NSArray * cookies = [NSHTTPCookie cookiesWithResponseHeaderFields: [httpResponse allHeaderFields ] forURL: response.URL];
66+ [[NSHTTPCookieStorage sharedHTTPCookieStorage ] setCookies: cookies forURL: httpResponse.URL mainDocumentURL: nil ];
67+ cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage ] cookies ];
68+
69+ for (NSHTTPCookie * c in cookies)
70+ {
71+ dispatch_async (dispatch_get_global_queue ( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0 ), ^(void ){
72+ // running in background thread is necessary because setCookie otherwise fails
73+ dispatch_async (dispatch_get_main_queue (), ^(void ){
74+ [cookieStore setCookie: c completionHandler: nil ];
75+ });
7476 });
75- }) ;
76- };
77+ };
78+ }
7779
7880 [urlSchemeTask didReceiveResponse: response];
7981 [urlSchemeTask didReceiveData: data];
0 commit comments