使用共享的WKWebViewCookies请求
我的项目中有几个不同的WKWebViews,他们都通过一个WKProcessPool共享cookie。
现在我想在REST API上发出一个请求,并且需要从那个WKWebViews发送那个cookie到那个API。 有没有办法得到cookies? 我所得到的一切都是来自NSHTTPCookieStorage
的cookies,但它们似乎并不与我在WKWebView中使用的cookie同步。 或者甚至有可能提出使用WKProcessPool的请求?
1)如果你的cookies不是纯HTTP的,你可以通过评估webView
上的JavaScript命令document.cookie
来得到它们,并将它们用于你的请求。 如果他们只是HTTP,似乎没有工作方法来做到这一点。 就我所知,在WKWebView
和NSURLSession
之间没有文档化的方法来同步cookie。
2)另一种方法(如果Cookie属于REST API所属的同一域) – 创build具有相同进程池的“后台” webView
,并通过此实例对REST API执行所有操作 – cookies将自动添加(甚至仅限HTTP):
-
你可以设置任何参数(方法/ body / headers / etc)来请求并通过
loadRequest:
如果您的REST API返回JSON,则可以使用JavaScript命令document.body
来获取它; -
获得响应代码有点难 – 你需要实现
webView:decidePolicyForNavigationResponse:
方法并捕获它 。 -
此外,您需要记住,您可以同时在
webView
只执行一个请求。 所以,你可能需要创build一个接连不断的请求队列。