使用共享的WKWebViewCookies来处理请求

时间:2016-08-22 09:41:54

标签: ios swift wkwebview wkwebviewconfiguration

我的项目中有一些不同的WKWebView,他们都在一个WKProcessPool上共享cookie。

现在我想在REST API上发出请求,并且需要将该WKWebViews中的cookie完全发送到该API。有办法获得饼干吗?我得到的是来自NSHTTPCookieStorage的cookie,但它们似乎与我在WKWebView中使用的cookie实际上并不一致。或者是否有可能提出使用WKProcessPool的请求?

1 个答案:

答案 0 :(得分:2)

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

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

  1. 您可以设置任何参数(方法/正文/标题/等)来请求和加载 通过loadRequest:;如果REST API返回JSON,则可以使用JavaScript命令 document.body获得它;

  2. 让响应代码变得更难 - 您需要实现 webView:decidePolicyForNavigationResponse:方法 WKNavigationDelegatecatch it

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