Подтвердить что ты не робот

Как я могу иметь несколько экземпляров webkit без совместного использования файлов cookie?

У меня есть приложение, которое создает пару экземпляров WebView, и я хотел бы, чтобы они работали как можно более независимо.

По крайней мере, я не хочу, чтобы они делили куки. Быстрый поиск в Google дал мне результаты, понравившиеся "вы не можете". Я надеюсь, что у кого-то есть лучший ответ.

4b9b3361

Ответ 1

Основной ответ: "вы не можете".

Посмотрев на это немного, я думаю, что это возможно, но чрезвычайно сложно. Это будет связано с внедрением resourceLoadDelegate в вашем WebView, который реализует -webView:resource:willSendRequest:redirectResponse:fromDataSource: и изменяет запрос на выключение HTTPShouldHandleCookies и добавляет к нему соответствующие файлы cookie. Он также должен реализовать -webView:resource:didReceiveResponse:fromDataSource:, чтобы узнать о любых файлах cookie, возвращаемых с сервера. Вы можете выделить/запустить свою собственную копию NSHTTPCookieStorage per-webview и использовать ее для хранения/получения файлов cookie.

Ответ 2

Этот пост подводит итог тому, что вы могли бы сделать. Я не уверен, насколько это возможно для вас, и я считаю, что это будет непростая задача, может быть, даже рискованная, но, похоже, это возможно: автор утверждает, что iCab делает это таким образом.

Я тоже надеялся на более простое решение. Конечно, поскольку Webkit является открытым исходным кодом, вы можете просто запустить свою собственную версию фреймворка с измененным поведением, я думаю?

Ответ 3

Я бы предположил, что файлы cookie будут настроены на уровне службы/приложения, а не для отдельных экземпляров или процессов. Возможно, вы можете пересмотреть свой вопрос, чтобы найти способ решить проблему, с которой вы сталкиваетесь, что требует, чтобы экземпляры не передавали файлы cookie.

Какова мотивация не использовать файлы cookie между экземплярами?

Если вам просто нужно 3 просмотра на одном и том же веб-ресурсе, вы можете настроить некоторые виртуальные хосты, которые указывают на тот же источник данных.

Ответ 4

Что вы можете сделать, это посмотреть libcurl, который может обрабатывать хранилища cookie, которые не смешиваются с системой загрузки URL для хранения тех файлов, которые вы хотите разделить. Для меня это кажется правильным и простым решением. Если вам действительно нужно зависеть от webview/webkit, это может быть не так.