You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift中WKWebView的Cookie启用与集成问题排查

WKWebView无法启用Cookie问题

我尝试了多种启用Cookie的方法,但均无效。Safari浏览器可正常工作,但WKWebView无法正常启用Cookie。

尝试的方法1代码

let config = WKWebViewConfiguration()
    let preferences = WKPreferences()
    preferences.javaScriptCanOpenWindowsAutomatically = false
    config.preferences = preferences
    
    let cookieStore = WKWebsiteDataStore.nonPersistent()
    config.websiteDataStore = cookieStore
    
    webView = WKWebView(frame: view.bounds, configuration: config)
    webView.navigationDelegate = self
    
    if let url = URL(string: "https://emerald-lyssa-85.tiiny.site/") {
        // Create a URLRequest with the URL
        let request = URLRequest(url: url)
        // Load cookies from the request
        if let cookies = HTTPCookieStorage.shared.cookies(for: url) {
            for cookie in cookies {
                webView.configuration.websiteDataStore.httpCookieStore.setCookie(cookie, completionHandler: nil)
            }
            // Load the URLRequest in the webView
            webView.load(request)
        }
    }
    view.addSubview(webView)

对应的代理方法代码

func webView(_ webView: WKWebView, decidePolicyFor navigationResponse: WKNavigationResponse, decisionHandler: @escaping (WKNavigationResponsePolicy) -> Void) {
    guard let response = navigationResponse.response as? HTTPURLResponse,
          let url = navigationResponse.response.url else {
        decisionHandler(.cancel)
        return
    }
    
    if let headerFields = response.allHeaderFields as? [String: String] {
        let cookies = HTTPCookie.cookies(withResponseHeaderFields: headerFields, for: url)
        cookies.forEach { cookie in
            webView.configuration.websiteDataStore.httpCookieStore.setCookie(cookie)
        }
    }
    decisionHandler(.allow)
}

这些方法均未生效。

内容的提问来源于stack exchange,提问作者DJX

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 00:56:14