20 Stimmen

Wie kann ich mehrere Instanzen von Webkit haben, ohne Cookies zu teilen?

Ich habe eine Anwendung, die mehrere WebView-Instanzen erstellt und ich möchte, dass sie so unabhängig wie möglich arbeiten.

Zumindest möchte ich nicht, dass sie sich Kekse teilen. Eine schnelle Google-Suche ergab Ergebnisse wie "Sie können nicht". Ich hoffe, dass jemand eine bessere Antwort hat.

18voto

Lily Ballard Punkte 175449

Die grundsätzliche Antwort lautet: "Man kann nicht".

Nachdem ich mich ein wenig damit beschäftigt habe, denke ich, dass es möglich, aber extrem kompliziert ist. Es würde die Implementierung eines resourceLoadDelegate auf Ihrer WebView erfordern, das -webView:resource:willSendRequest:redirectResponse:fromDataSource: und ändert die Anfrage so, dass sie ausgeschaltet wird HTTPShouldHandleCookies und fügt alle relevanten Cookies manuell zur Anfrage hinzu. Außerdem muss sie implementieren -webView:resource:didReceiveResponse:fromDataSource: um herauszufinden, welche Cookies vom Server zurückgegeben werden. Sie können Ihre eigene Kopie von NSHTTPCookieStorage pro Webansicht und verwenden diese zum Speichern/Abrufen der Cookies.

3voto

Diese Stelle fasst zusammen, was Sie tun könnten. Ich bin mir nicht sicher, ob es für Sie machbar ist, und ich habe das Gefühl, dass es keine einfache Aufgabe wäre, vielleicht sogar riskant, aber es scheint so zu sein möglich : Der Autor behauptet, dass iCab dies so macht.

Ich hatte eigentlich auch auf eine einfachere Lösung gehofft. Natürlich, da Webkit Open Source ist, könnten Sie einfach Ihre eigene Version des Rahmens mit geänderten Verhalten ich denke ausrollen?

0voto

Will Bickford Punkte 5340

Ich würde annehmen, dass Cookies auf Dienst-/Anwendungsebene und nicht für bestimmte Instanzen oder Prozesse konfiguriert werden. Vielleicht könnten Sie Ihre Frage überarbeiten, um einen Weg zu finden, das Problem zu lösen, das Sie haben und das erfordert, dass die Instanzen keine Cookies gemeinsam nutzen.

Was ist der Grund dafür, dass keine Cookies zwischen den Instanzen ausgetauscht werden?

Wenn Sie nur 3 Ansichten auf dieselbe Webressource benötigen, können Sie einige virtuelle Hosts einrichten, die auf dieselbe Datenquelle verweisen.

0voto

Was Sie tun können, ist einen Blick zu werfen auf libcurl die mit Cookie-Speichern umgehen kann, die sich nicht mit dem systemweiten URL-Loading-Cookie-Speicher für die Anfragen vermischen, die Sie trennen möchten. Für mich scheint das eine gültige und einfache Lösung zu sein. Wenn Sie wirklich brauchen, um auf webview/webkit abhängen es möglicherweise nicht sein.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X