Commit 86fbe3a7 cgx

优化cookie同步

1 个父辈 c0ce9fae
...@@ -68,6 +68,12 @@ ...@@ -68,6 +68,12 @@
NSString *url = navigationAction.request.URL.absoluteString; NSString *url = navigationAction.request.URL.absoluteString;
DSLog(@"AI睡眠教练主页面入口->跳转链接:%@", url); DSLog(@"AI睡眠教练主页面入口->跳转链接:%@", url);
// 为了解决跨域问题,每次跳转url时把cookies拼接上
NSMutableURLRequest *request = (NSMutableURLRequest *)navigationAction.request;
NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies];
NSDictionary *dict = [NSHTTPCookie requestHeaderFieldsWithCookies:cookies];
request.allHTTPHeaderFields = dict;
if ([url isEqualToString:AICoachURL]) { if ([url isEqualToString:AICoachURL]) {
decisionHandler(WKNavigationActionPolicyAllow); decisionHandler(WKNavigationActionPolicyAllow);
} else { } else {
...@@ -162,30 +168,35 @@ ...@@ -162,30 +168,35 @@
} }
} }
#pragma mark - 方法1:同步cookie(登录成功后设置,iOS 11及以上 #pragma mark - 方法1(拼接Cookies的方式
- (void)needUpdateAiCoach { - (void)needUpdateAiCoach {
// 设置cookie
[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyAlways];
// 获取cookie信息
NSDictionary *properties = kGetUserDefaultsObj(DsAppCookie);
NSMutableDictionary *muProperties = [NSMutableDictionary dictionaryWithDictionary:properties];
NSURL *url = [NSURL URLWithString:ServerURL];
NSString *IP = url.host;
[muProperties setValue:IP forKey:@"Domain"];
NSHTTPCookie *cookie = [NSHTTPCookie cookieWithProperties:muProperties];
[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookie];
// 同步cookie
WKHTTPCookieStore *cookieStrore = self.aiWebView.configuration.websiteDataStore.httpCookieStore;
NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]; NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies];
for (NSHTTPCookie *cookie in cookies) { NSDictionary *dict = [NSHTTPCookie requestHeaderFieldsWithCookies:cookies];
if ([cookie.domain isEqualToString:IP]) { self.request.allHTTPHeaderFields = dict;
[cookieStrore setCookie:cookie completionHandler:^{ [self.aiWebView loadRequest:self.request];
[self.aiWebView loadRequest:self.request];
}];
}
}
// 该方法在部分设备失效 // 方法2:同步cookie(登录成功后设置,iOS 11及以上,存在部分设备无法同步问题)
// [[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyAlways];
// // 获取cookie信息
// NSDictionary *properties = kGetUserDefaultsObj(DsAppCookie);
// NSMutableDictionary *muProperties = [NSMutableDictionary dictionaryWithDictionary:properties];
// NSURL *url = [NSURL URLWithString:ServerURL];
// NSString *IP = url.host;
// [muProperties setValue:IP forKey:@"Domain"];
// NSHTTPCookie *cookie = [NSHTTPCookie cookieWithProperties:muProperties];
// [[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookie];
// // 同步cookie
// WKHTTPCookieStore *cookieStrore = self.aiWebView.configuration.websiteDataStore.httpCookieStore;
// NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies];
// for (NSHTTPCookie *cookie in cookies) {
// if ([cookie.domain isEqualToString:IP]) {
// [cookieStrore setCookie:cookie completionHandler:^{
// [self.aiWebView loadRequest:self.request];
// }];
// }
// }
// 该方法在部分设备失效(存在部分设备无法同步问题)
// NSHTTPCookie *sidCookie = nil; // NSHTTPCookie *sidCookie = nil;
// for (NSHTTPCookie *cookie in [NSHTTPCookieStorage sharedHTTPCookieStorage].cookies) { // for (NSHTTPCookie *cookie in [NSHTTPCookieStorage sharedHTTPCookieStorage].cookies) {
// // connect.sid是后台下发的cookie字段 // // connect.sid是后台下发的cookie字段
...@@ -200,7 +211,7 @@ ...@@ -200,7 +211,7 @@
// }]; // }];
} }
#pragma mark - 方法2:通过js注入cookie(推荐) #pragma mark - 方法3:通过js注入cookie(推荐)
- (WKUserScript *)injectCookieScript { - (WKUserScript *)injectCookieScript {
WKUserScript *userScript = [[WKUserScript alloc] initWithSource:[self cookieString] injectionTime:WKUserScriptInjectionTimeAtDocumentStart forMainFrameOnly:NO]; WKUserScript *userScript = [[WKUserScript alloc] initWithSource:[self cookieString] injectionTime:WKUserScriptInjectionTimeAtDocumentStart forMainFrameOnly:NO];
return userScript; return userScript;
...@@ -257,7 +268,11 @@ ...@@ -257,7 +268,11 @@
_aiWebView.scrollView.showsHorizontalScrollIndicator = NO; _aiWebView.scrollView.showsHorizontalScrollIndicator = NO;
// 解决页面顶部出现白色问题 // 解决页面顶部出现白色问题
_aiWebView.scrollView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; _aiWebView.scrollView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
self.request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:AICoachURL] cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:10.0]; self.request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:AICoachURL] cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:10.0];
NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies];
NSDictionary *dict = [NSHTTPCookie requestHeaderFieldsWithCookies:cookies];
self.request.allHTTPHeaderFields = dict;
[_aiWebView loadRequest:self.request]; [_aiWebView loadRequest:self.request];
} }
return _aiWebView; return _aiWebView;
......
...@@ -116,8 +116,6 @@ ...@@ -116,8 +116,6 @@
} }
+ (void)updateDataNotiAfterLoginSuccess { + (void)updateDataNotiAfterLoginSuccess {
[self saveCookie];
// 刷新主页数据 // 刷新主页数据
[[NSNotificationCenter defaultCenter] postNotificationName:NeedUpdateHomePage object:nil]; [[NSNotificationCenter defaultCenter] postNotificationName:NeedUpdateHomePage object:nil];
// 刷新AI睡眠教练 // 刷新AI睡眠教练
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!