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