Как я могу иметь несколько экземпляров webkit без совместного использования файлов cookie? - PullRequest
19 голосов
/ 13 декабря 2008

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

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

Ответы [ 4 ]

17 голосов
/ 13 декабря 2008

Основной ответ: «Вы не можете».

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

3 голосов
/ 13 декабря 2008

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

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

0 голосов
/ 22 декабря 2008

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

0 голосов
/ 13 декабря 2008

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...