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

Это, однако, дает мне много других проблем...

У кого-нибудь были подобные проблемы или какой-либо вклад?

0 ответов

Другие вопросы по тегам