iOS Swift WKWebView维护用户会话Cookie

时间:2018-01-30 04:14:07

标签: ios swift session cookies wkwebview

我知道这已经以几种相关的形式得到了解答,但是我几天都在扭曲我的大脑,试图弄清楚这一点无济于事。我已经尝试过每一个我能找到的解决方案,这个解决方案似乎甚至是远程相关的。

我正在使用WKWebView并加载网站的网址。在该网站上,用户将登录。为了保持用户登录,我们需要使用cookie维护会话。我在Android上完美运行(使用webview和cookies)。

我需要为iOS设计以下内容:

1)如何查找cookie(如果已存在)并使用URLRequest发送。

2)如何确保在打开和关闭的应用程序之间维护cookie。

2 个答案:

答案 0 :(得分:0)

本准则对我有用 -

在ViewDidLoad方法

中添加此代码
    let preferences = WKPreferences()
    preferences.javaScriptEnabled = true
    preferences.javaScriptCanOpenWindowsAutomatically = true
    let wkUController = WKUserContentController()
    let cookieScript = WKUserScript(source: "document.cookie = 'Set-Cookie: sessionId =\(Defaults[AppConstants.UD_SESSION_ID].string!)';", injectionTime: WKUserScriptInjectionTime.atDocumentStart, forMainFrameOnly: false)
    wkUController.addUserScript(cookieScript)
    let wkWebConfig = WKWebViewConfiguration()
    wkWebConfig.userContentController = wkUController
    wkWebConfig.preferences = preferences
    // Adding webview
    webView = WKWebView(frame: self.view.bounds, configuration: wkWebConfig)

   var request = URLRequest(url: url)
    request.addValue("Set-Cookie: sessionId = \(Defaults[AppConstants.UD_SESSION_ID].string!)", forHTTPHeaderField: "Cookie")
    webView?.load(request)

答案 1 :(得分:0)

好,回到这几个月后:/

这很简单。在我嵌入WKWebView的网站的登录页面中,我没有单击“记住我”复选框。我掉了一个洞,认为它与Cookie无关,因为该网站从未保存过,但我从未真正指示它这样做。

希望对任何人都有帮助。我的脸因多次面容而淤青。