我的项目中有一些不同的WKWebView,他们都在一个WKProcessPool上共享cookie。
现在我想在REST API上发出请求,并且需要将该WKWebViews中的cookie完全发送到该API。有办法获得饼干吗?我得到的是来自NSHTTPCookieStorage
的cookie,但它们似乎与我在WKWebView中使用的cookie实际上并不一致。或者是否有可能提出使用WKProcessPool的请求?
答案 0 :(得分:2)
1)如果您的cookie不是仅限HTTP,您可以通过评估document.cookie
上的JavaScript命令webView
来获取它们,并将它们用于您的请求。
如果它们只是HTTP,那么似乎没有工作方法可以做到这一点。
据我所知,没有记录在WKWebView
和NSURLSession
之间同步Cookie的方法。
2)另一种方法(如果cookie属于REST API所属的同一个域) - 使用相同的进程池创建“background”webView
并通过此实例对REST API执行所有操作 - 将自动添加cookie(甚至仅限HTTP):
您可以设置任何参数(方法/正文/标题/等)来请求和加载
通过loadRequest:
;如果REST API返回JSON,则可以使用JavaScript命令
document.body
获得它;
让响应代码变得更难 - 您需要实现
webView:decidePolicyForNavigationResponse:
方法
WKNavigationDelegate
和catch
it。
此外,您需要记住,您只能执行1个请求
同时在webView
。因此,您可能需要创建一些队列
将一个接一个地执行的请求。