Cookie加载后如何重新启动已取消的WKNavigationAction

问题描述

对于某些WKNavigationAction,我需要将cookie加载到wkwebview中, 所以我取消了动作

webView(_ webView: WKWebView,decidePolicyFor navigationAction: WKNavigationAction,decisionHandler: @escaping (WKNavigationActionPolicy) -> Void)

像这样

   if !cookiesAmended,let sessionCookies = httpcookiestorage.shared.cookies {
            cookiesAmended = true
            print("decidePolicyFor amending")
            decisionHandler(.cancel)
            amendWith(cookies: sessionCookies,thenLoadRequest: navigationAction.request)
            return;
   }

加载Cookie

func amendWith(cookies: [HTTPCookie],thenLoadRequest request: URLRequest)
    {
        let sem = dispatchGroup()
        for cookie in cookies {
            sem.enter()
            self.webView.configuration.websiteDataStore.httpCookieStore.setCookie(cookie,completionHandler: {
                sem.leave()
                let name = cookie.name
                print("decidePolicyFor amended with \(name)")

            })
        }
        sem.notify(queue: .main) { [weak self] in
            guard let self = self else {
                return
            }
            self.webView.load(request)
        }
    }

一旦加载完毕,我将使用navigationAction.request完成webview.load

但是翻译中会丢失一些内容(特别是formdata)

除了告诉服务器人员我的想法之外,正确的方法是什么? 如此美妙的建筑?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)