3

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

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

4

1 回答 1

2

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

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 回答