【问题标题】:Is setting up a cookie with WKWebsiteDataStore too late?使用 WKWebsiteDataStore 设置 cookie 是否为时已晚?
【发布时间】:2018-06-22 15:05:06
【问题描述】:

我需要在 iOS 10 和 iOS 11 上的 WKWebView 中设置一个 cookie。阅读 this 后,我使用 iOS 10 中的 JavaScript 脚本和 iOS 11 中的 WKWebsiteDataStore 为 2 个 iOS 版本编写了不同的代码。

使用 iOS 10 时我没有任何问题,但使用 iOS 11 时,Web 应用程序会看到我在上一个会话中使用的 cookie。我的意思是,如果我第一次启动应用程序时 cookie 的值为“A”,则网络应用程序看不到 cookie;如果我关闭应用程序并使用“B”作为 cookie 的新值重新启动它,网络应用程序现在会从 cookie 中读取“A”。但是,通过 Web Inspector,我看到了 cookie 的正确值。

似乎 WKWebsiteDataStore 设置的 cookie 为时已晚;我该如何解决这个问题(即使在 iOS 11 中也不使用 iOS 10 中使用的相同代码)?

我的代码是:

    let preferences = WKPreferences()
    preferences.javaScriptEnabled = true

    let configuration = WKWebViewConfiguration()
    let userContentController = WKUserContentController()
    configuration.preferences = preferences

    if #available(iOS 11, *) {
        if let cookie = cookie {
            let dataStore = WKWebsiteDataStore.default()
            dataStore.httpCookieStore.setCookie(cookie) {
                configuration.websiteDataStore = dataStore
                configuration.userContentController = userContentController
                self.createAndLoadWebView(with: configuration)
            }
        }
    } else {
        if let cookie = cookie {

            let script = getJSCookiesString(for: [cookie])
            let cookieScript = WKUserScript(source: script, injectionTime: .atDocumentStart, forMainFrameOnly: false)
            userContentController.addUserScript(cookieScript)

            configuration.userContentController = userContentController
            createAndLoadWebView(with: configuration)
        }
    }

然后:

private func createAndLoadWebView(with configuration: WKWebViewConfiguration) {

    webView = WKWebView(frame: self.containerView.frame, configuration: configuration)
    self.containerView.addSubview(webView)
    let req = URLRequest(url: pageUrl)
    webView.load(req)
}

【问题讨论】:

    标签: cookies ios10 ios11 wkwebview


    【解决方案1】:

    在请求标头中添加相同的 cookie,我遇到了同样的问题,但在标头请求页面中添加 cookie 后正常加载。

    【讨论】:

      猜你喜欢
      • 2021-06-05
      • 2013-04-17
      • 1970-01-01
      • 2014-06-15
      • 2011-08-22
      • 2011-02-22
      • 2020-06-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多