karosLi / KKJSBridge

一站式解决 WKWebView 支持离线包,Ajax/Fetch 请求,表单请求和 Cookie 同步的问题 (基于 Ajax Hook,Fetch Hook 和 Cookie Hook)
MIT License
693 stars 120 forks source link

iOS 13.1.3 cookie不同步 #3

Closed kwongfung closed 4 years ago

kwongfung commented 4 years ago

copyNSHTTPCookieStorageToWKHTTPCookieStoreForWebViewOniOS11 在iOS 13.1.3及以上版本document.cookie获取不到Native设置的cookie。请问有谁遇到这个问题么?

karosLi commented 4 years ago

你是什么场景下需要使用 copyNSHTTPCookieStorageToWKHTTPCookieStoreForWebViewOniOS11 这个 api 呢?有具体的 demo 可以看下吗?

kwongfung commented 4 years ago
    if (@available(iOS 11.0, *)) {
        NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies];
        WKHTTPCookieStore *cookieStroe = _webView.configuration.websiteDataStore.httpCookieStore;
        for (NSHTTPCookie *cookie in cookies) {
            [cookieStroe setCookie:cookie completionHandler:^{
                if ([[cookies lastObject] isEqual:cookie]) {
                    completion ? completion() : nil;
                    return;
                }
            }];
        }
    }
    else {
        WKUserContentController *ucc = _webView.configuration.userContentController;
        WKUserScript *cookieScript = [[WKUserScript alloc] initWithSource:[HybridView ajaxCookieScripts] injectionTime:WKUserScriptInjectionTimeAtDocumentStart forMainFrameOnly:NO];
        [ucc addUserScript:cookieScript];

        completion ? completion() : nil;
    }

从线上日志收集看到iOS 11有概率性的setCookie不成功,iOS 11以下是正常的。但测试环境没办法复现出来。

karosLi commented 4 years ago

嗯,我这边也没法重现出来,不过这个方法,目前这个库也没有使用到,只是提供了这个方法。另外实际场景中,应该也是不需要用到这个方法的,第一次请求和ajax请求已经基本覆盖了cookie设置了,所以不是太清楚你的实际场景是什么样的

kwongfung commented 4 years ago

ok , thank u all the same