Commit 86fbe3a7 cgx

优化cookie同步

1 个父辈 c0ce9fae
......@@ -68,6 +68,12 @@
NSString *url = navigationAction.request.URL.absoluteString;
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]) {
decisionHandler(WKNavigationActionPolicyAllow);
} else {
......@@ -162,30 +168,35 @@
}
}
#pragma mark - 方法1:同步cookie(登录成功后设置,iOS 11及以上
#pragma mark - 方法1(拼接Cookies的方式
- (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];
for (NSHTTPCookie *cookie in cookies) {
if ([cookie.domain isEqualToString:IP]) {
[cookieStrore setCookie:cookie completionHandler:^{
[self.aiWebView loadRequest:self.request];
}];
}
}
NSDictionary *dict = [NSHTTPCookie requestHeaderFieldsWithCookies:cookies];
self.request.allHTTPHeaderFields = dict;
[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;
// for (NSHTTPCookie *cookie in [NSHTTPCookieStorage sharedHTTPCookieStorage].cookies) {
// // connect.sid是后台下发的cookie字段
......@@ -200,7 +211,7 @@
// }];
}
#pragma mark - 方法2:通过js注入cookie(推荐)
#pragma mark - 方法3:通过js注入cookie(推荐)
- (WKUserScript *)injectCookieScript {
WKUserScript *userScript = [[WKUserScript alloc] initWithSource:[self cookieString] injectionTime:WKUserScriptInjectionTimeAtDocumentStart forMainFrameOnly:NO];
return userScript;
......@@ -257,7 +268,11 @@
_aiWebView.scrollView.showsHorizontalScrollIndicator = NO;
// 解决页面顶部出现白色问题
_aiWebView.scrollView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
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];
}
return _aiWebView;
......
......@@ -116,8 +116,6 @@
}
+ (void)updateDataNotiAfterLoginSuccess {
[self saveCookie];
// 刷新主页数据
[[NSNotificationCenter defaultCenter] postNotificationName:NeedUpdateHomePage object:nil];
// 刷新AI睡眠教练
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!