使用共享的WKWebViewCookies请求

我的项目中有几个不同的WKWebViews,他们都通过一个WKProcessPool共享cookie。

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

1)如果你的cookies不是纯HTTP的,你可以通过评估webView上的JavaScript命令document.cookie来得到它们,并将它们用于你的请求。 如果他们只是HTTP,似乎没有工作方法来做到这一点。 就我所知,在WKWebViewNSURLSession之间没有文档化的方法来同步cookie。

2)另一种方法(如果Cookie属于REST API所属的同一域) – 创build具有相同进程池的“后台” webView ,并通过此实例对REST API执行所有操作 – cookies将自动添加(甚至仅限HTTP):

  1. 你可以设置任何参数(方法/ body / headers / etc)来请求并通过loadRequest: 如果您的REST API返回JSON,则可以使用JavaScript命令document.body来获取它;

  2. 获得响应代码有点难 – 你需要实现webView:decidePolicyForNavigationResponse:方法并捕获它 。

  3. 此外,您需要记住,您可以同时在webView只执行一个请求。 所以,你可能需要创build一个接连不断的请求队列。