Как внедрить файл cookie в WKWebView или WKWebSiteDataStore без JavaScript?

Я пытаюсь явно/программно установить значение файла cookie пула процессов WKWebView для каждого домена. Я хочу точно эмулировать, что происходит, когда сервер возвращает заголовок Set-Cookie. Исследование, которое я провел здесь и в других местах, говорит о том, что нужно внедрить это как JavaScript. Мне это не нравится в принципе — это кажется неправильным. Я хочу поговорить с «ответственным парнем» (внутренняя структура данных cookie WebKit), а не внедрять взлом в последнюю секунду через второй язык (JavaScript).

Я также получаю ошеломляющий 1% отказов этого метода, вероятно, из-за 1) очень асинхронного характера WKWebView взаимодействия, поскольку все сетевые и JavaScript-вычисления происходят в отдельном процессе и 2) Тот факт, что я повторно использую один и тот же WKWebView несколько раз, когда истекает сеанс входа в систему, и сбрасываю сценарий document.cookie непосредственно перед принудительной перезагрузкой страницы.

Я удивлен, что нет ничего похожего на WKWebSiteDataStore.addCookie(value: String, inDomain: NSURL); тот факт, что у него есть removeDataOfTypes(...) без add или inject, кричит мне о "зияющей дыре в дизайне".

Использованная литература:

ios9 - WKProcessPool() с несколькими общими файлами WkWebView не работает?

Могу ли я настроить файлы cookie для использования WKWebView?


person BaseZen    schedule 05.10.2016    source источник


Ответы (1)


Только iOS 11 поддерживает это: https://developer.apple.com/documentation/webkit/wkwebsitedatastore/2881956-httpcookiestore (

person apr    schedule 19.09.2017