WKWebview теряет логин cookie
В настоящее время у меня есть проблема с гибридным приложением, которое использует WKWebView для отображения веб-страницы.
После того, как приложение перезапустится и создаст новый сеанс / WKWebWiew, новый файл cookie для входа в систему передается в WKWebView из веб-службы. Это отлично работает в двух из трех попыток, но в некоторых случаях файл cookie для входа в систему не сохраняется в общем хранилище файлов cookie, используемом WKWebView (NSHTTPCookieStorage).
(Использование того же веб-сервиса с UIWebview работает нормально)
Я попробовал инструменты для анализа сети и вижу, что веб-служба отправляет мне новый файл 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
Это, однако, дает мне много других проблем...
У кого-нибудь были подобные проблемы или какой-либо вклад?