ios12-从 NSHTTPURLResponse 获取 set-cookie
ios12-Get set-cookie from NSHTTPURLResponse
我之前在 decidePolicyForNavigationResponse 方法中得到 set-cookie 是这样的:
- (void)webView:(WKWebView *)webView decidePolicyForNavigationResponse:(WKNavigationResponse *)navigationResponse decisionHandler:(void (^)(WKNavigationResponsePolicy))decisionHandler{
NSHTTPURLResponse *response = (NSHTTPURLResponse *)navigationResponse.response;
self.response = response;
}
但是在ios12navigationResponse中这个方法无法获取set-cookieagain.Can我有其他方法可以替代吗?或者有没有其他方法可以让我在页面上设置 cookie?如果您不明白,请告诉我。谢谢~
我遇到了和你一样的问题。我想不再通过 WKNavigationResponse
检索 cookie。 (从 iOS 12.* 开始)
WKWebview的cookies存放在NSHTTPCookieStorage.sharedHTTPCookieStorage()
您可以尝试重新设计如下代码而不是您的代码
Objective-C
if (@available(iOS 11.0, *)) { //available on iOS 11+
WKHTTPCookieStore *cookieStore = webView.configuration.websiteDataStore.httpCookieStore;
[cookieStore getAllCookies:^(NSArray* cookies) {
if (cookies.count > 0) {
for (NSHTTPCookie *cookie in cookies) {
//TODO...
}
}
}];
}
Swift 4
if #available(iOS 11, *) {
webView.configuration.websiteDataStore.httpCookieStore.getAllCookies({ (cookies) in
for cookie in cookies {
//TODO...
}
})
}
以上代码适用于 iOS 11+,如果您的应用支持较低版本
你应该把上面的代码和你的分开。
希望对你有用。
我之前在 decidePolicyForNavigationResponse 方法中得到 set-cookie 是这样的:
- (void)webView:(WKWebView *)webView decidePolicyForNavigationResponse:(WKNavigationResponse *)navigationResponse decisionHandler:(void (^)(WKNavigationResponsePolicy))decisionHandler{
NSHTTPURLResponse *response = (NSHTTPURLResponse *)navigationResponse.response;
self.response = response;
}
但是在ios12navigationResponse中这个方法无法获取set-cookieagain.Can我有其他方法可以替代吗?或者有没有其他方法可以让我在页面上设置 cookie?如果您不明白,请告诉我。谢谢~
我遇到了和你一样的问题。我想不再通过 WKNavigationResponse
检索 cookie。 (从 iOS 12.* 开始)
WKWebview的cookies存放在NSHTTPCookieStorage.sharedHTTPCookieStorage()
您可以尝试重新设计如下代码而不是您的代码
Objective-C
if (@available(iOS 11.0, *)) { //available on iOS 11+
WKHTTPCookieStore *cookieStore = webView.configuration.websiteDataStore.httpCookieStore;
[cookieStore getAllCookies:^(NSArray* cookies) {
if (cookies.count > 0) {
for (NSHTTPCookie *cookie in cookies) {
//TODO...
}
}
}];
}
Swift 4
if #available(iOS 11, *) {
webView.configuration.websiteDataStore.httpCookieStore.getAllCookies({ (cookies) in
for cookie in cookies {
//TODO...
}
})
}
以上代码适用于 iOS 11+,如果您的应用支持较低版本 你应该把上面的代码和你的分开。
希望对你有用。