如何从 Swift 4 中的 WKWebView 获取 cookie 值?

How to fetch cookies values from WKWebView in Swift 4?

我无法从该网站获取 cookie -“https://bødekontrol.dk” 我正在使用 Xcode 9.4.1 和 iOS 11。 我遵循了以下代码,

import UIKit
import WebKit
class ViewController: UIViewController {
    var urlString = "https://bødekontrol.dk"
    var webView: WKWebView!
    fileprivate var webViewIsInited = false

    override func viewWillLayoutSubviews() {
        if !webViewIsInited {
            webViewIsInited = true
            if webView == nil {
                webView = WKWebView(frame: UIScreen.main.bounds, configuration: WKWebViewConfiguration())
            }

            view.addSubview(webView)
            webView.navigationDelegate = self
            webView.uiDelegate = self
            webView.loadUrl(string: urlString)
        }
    }
}
extension ViewController: WKNavigationDelegate {

    func webView(_ webView: WKWebView, decidePolicyFor navigationResponse: WKNavigationResponse, decisionHandler: @escaping (WKNavigationResponsePolicy) -> Void) {
        decisionHandler(.allow)
        if let httpResponse = navigationResponse.response as? HTTPURLResponse {
            if let headers = httpResponse.allHeaderFields as? [String: String], let url = httpResponse.url {
                let cookies = HTTPCookie.cookies(withResponseHeaderFields: headers, for: url)

                for cookie in cookies {
                    print(cookie.description)

                    print("found cookie " + cookie.name + " " + cookie.value)
                }
            }
        }
    }

    func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
        print("didFinish navigation")

    }
}

extension ViewController: WKUIDelegate {

    func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration, for navigationAction: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView? {
        if navigationAction.targetFrame == nil {
            let vc = ViewController()
            vc.urlString = navigationAction.request.url?.absoluteString ?? "http://google.com"
            vc.view.frame = UIScreen.main.bounds
            vc.webView = WKWebView(frame: UIScreen.main.bounds, configuration: configuration)
            navigationController?.pushViewController(vc, animated: false)
            return vc.webView
        }
        return nil
    }
}

extension WKWebView {

    func loadUrl(string: String) {
        if let encoded = string.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed),
            let url = URL(string: encoded)
        {
            if self.url?.host == url.host {
                self.reload()
            } else {
                load(URLRequest(url: url))
            }
        }
    }
}

实现此协议WKHTTPCookieStoreObserver并检查此协议的功能。

cookiesDidChange