使用共享的 WKWebView Cookie 进行请求

Use shared WKWebViewCookies for a request

我的项目中有几个不同的 WKWebView,它们都通过单个 WKProcessPool 共享 cookie。

现在我想在 REST API 上发出请求,并且需要将 cookie 从那个 WKWebView 准确地发送到那个 API。有没有办法得到饼干?我得到的一切都是来自 NSHTTPCookieStorage 的 cookie,但它们似乎与我在 WKWebView 中使用的 cookie 并不真正同步。或者甚至有可能发出使用 WKProcessPool 的请求吗?

1) 如果您的 cookie 不是仅限 HTTP,您可以通过在 webView 上评估 JavaScript 命令 document.cookie 来获取它们并将它们用于您的请求。 如果它们是 HTTP-only,似乎没有可行的方法来执行此操作。 据我所知,没有记录在 WKWebViewNSURLSession 之间同步 cookie 的方法。

2) 另一种方法(如果 cookie 属于 REST API 所属的同一域)- 使用相同的进程池创建 "background" webView 并对 REST [=42] 执行所有操作=] 通过此实例 - 将自动添加 cookie(甚至仅 HTTP):

  1. 您可以设置任何参数(method/body/headers/etc)来请求和加载 通过 loadRequest:;如果你的 REST API returns JSON,你可以使用 JavaScript 命令 document.body得到它;

  2. 获取响应代码有点困难 - 您需要实施 webView:decidePolicyForNavigationResponse: 的方法 WKNavigationDelegate 赶上 它.

  3. 此外,您需要记住,您只能执行 1 个请求 同时在 webView 中。所以,你可能需要创建一些队列 将一个接一个执行的请求数。