问题说明:在使用WKWebview时遇到一个问题,在h5页面A中存储的数据,在h5页面B中拿不到这个存储的数据。
原因:WKWebView Cookie 问题在于 WKWebView 发起的请求不会自动带上存储于 NSHTTPCookieStorage 容器中的 Cookie。
解决方案:
通过让所有WKWebView 共享同一个 WKProcessPool 实例,可以实现多个 WKWebView 之间共享 Cookie(session Cookie and persistent Cookie)数据。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| //定义一个processPool单例 +(WKProcessPool*)sharedProcessPool{
static WKProcessPool *processPool = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ if (!processPool) { processPool = [[WKProcessPool alloc] init]; } }); return processPool; }
// 配置 WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc] init]; config.processPool = [WebViewController sharedProcessPool]; webView = [[WKWebView alloc] initWithFrame:() configuration:config];
|