いくつかのWebViewインスタンスを作成するアプリがあり、それらを可能な限り独立して動作させたいと考えています。
少なくとも、私は彼らにクッキーを共有させたくありません。グーグルですばやく検索すると、「できません」という結果が得られました。私は誰かがより良い答えを持っていることを望んでいます。
いくつかのWebViewインスタンスを作成するアプリがあり、それらを可能な限り独立して動作させたいと考えています。
少なくとも、私は彼らにクッキーを共有させたくありません。グーグルですばやく検索すると、「できません」という結果が得られました。私は誰かがより良い答えを持っていることを望んでいます。
基本的な答えは「できません」です。
これを少し見てみると、可能だと思いますが、非常に複雑です。WebView に resourceLoadDelegate を実装して、リクエストを無効にするように実装-webView:resource:willSendRequest:redirectResponse:fromDataSource:
および変更し、HTTPShouldHandleCookies
関連する Cookie を手動でリクエストに追加する必要があります。また-webView:resource:didReceiveResponse:fromDataSource:
、サーバーから返されたすべての Cookie を検出するために実装する必要があります。WebView ごとの独自のコピーを割り当て/初期NSHTTPCookieStorage
化し、それを使用して Cookie を保存/取得できます。
この投稿は、あなたができることをまとめたものです。それがあなたにとって実現可能かどうかはわかりませんし、簡単な作業ではなく、おそらく危険でさえあると思いますが、可能であるように思われます.iCabはこのように行うと著者は主張しています.
私ももっと簡単な解決策を望んでいました。もちろん、Webkit はオープン ソースなので、動作を変更したフレームワークの独自のバージョンを展開することもできます。
あなたができることは、あなたが分離したいそれらのリクエストのために、URLローディングシステム全体のクッキーストレージと混ざらないクッキーストアを扱うことができるlibcurlを見てみることです。私にとって、それは有効で単純な解決策のようです。本当にwebview/webkitに依存する必要がある場合は、そうではないかもしれません。
Cookie は、特定のインスタンスやプロセスではなく、サービス/アプリケーション レベルで設定されると思います。おそらく、質問を修正して、インスタンスが Cookie を共有しないことが必要な問題を解決する方法を見つけることができます。
インスタンス間で Cookie を共有しない理由は何ですか?
同じ Web リソースに 3 つのビューだけが必要な場合は、同じデータ ソースを指すいくつかの仮想ホストをセットアップできます。