3

プロジェクト内にいくつかの異なる WKWebViews があり、それらはすべて単一の WKProcessPool で Cookie を共有しています。

今、私は REST API でリクエストを作成したいと考えており、その Cookie をその WKWebViews からその API に正確に送信する必要があります。クッキーを取得する方法はありますか? 私が取得するものはすべて からの CookieNSHTTPCookieStorageですが、WKWebView で使用する Cookie とは実際には同期していないようです。それとも、WKProcessPool も使用するリクエストを行う可能性さえありますか?

4

1 に答える 1

2

1) Cookie が HTTP 専用でない場合は、JavaScript コマンドdocument.cookieを onで評価して取得しwebView、リクエストに使用できます。それらが HTTP のみの場合、これを行うための有効な方法はないようです。私が知る限り、WKWebViewとの間で Cookie を同期する文書化された方法はありません。NSURLSession

2) 別のアプローチ (Cookie が REST API が属する同じドメインに属している場合) -webView同じプロセス プールで「バックグラウンド」を作成し、このインスタンスを介して REST API に対するすべての操作を実行します。Cookie は自動的に追加されます (HTTP のみでも):

  1. パラメータ(メソッド/ボディ/ヘッダー/など)を設定してloadRequest:、;を介してリクエストおよびロードできます。REST API が JSON を返す場合は、JavaScript コマンド document.bodyを使用して取得できます。

  2. 応答コードを取得するのは少し難しいです 。webView:decidePolicyForNavigationResponse:メソッド を実装WKNavigationDelegateしてキャッチする必要があります。

  3. webViewまた、同時に実行できるリクエストは 1 つだけであることに注意する必要があります。そのため、次々に実行されるリクエストのキューを作成する必要がある場合があります。

于 2016-08-24T22:08:57.530 に答える