【发布时间】:2017-01-13 17:18:25
【问题描述】:
我有一个可在普通网页上使用的 URL,但嵌入在 WKWebView 中时,我总是遇到错误会话已过期。有没有办法在这个 WKWebView 上启用 cookie?
【问题讨论】:
-
Cookies 默认启用。您的网站是否需要 javascript,并且您是否启用了 javascript?您可以在 mac 上使用 Safari 的页面检查器检查 cookie。
我有一个可在普通网页上使用的 URL,但嵌入在 WKWebView 中时,我总是遇到错误会话已过期。有没有办法在这个 WKWebView 上启用 cookie?
【问题讨论】:
您可以从响应中保存 cookie
- (void)webView:(WKWebView *)webView decidePolicyForNavigationResponse:(WKNavigationResponse *)navigationResponse decisionHandler:(void (^)(WKNavigationResponsePolicy))decisionHandler {
NSDictionary *headers = [(NSHTTPURLResponse *)navigationResponse.response allHeaderFields];
if ([headers objectForKey:@"Set-Cookie"] != nil) {
_cookie = [headers objectForKey:@"Set-Cookie"];
}
decisionHandler(WKNavigationResponsePolicyAllow);
}
并在请求中设置cookie
_request = [[NSMutableURLRequest alloc] initWithURL:url];
[_request setValue:_cookie forHTTPHeaderField:@"Cookie"];
[_webView loadRequest:_request];
【讨论】: