iOS Swift WKWebView 维护用户会话 Cookie
iOS Swift WKWebView Maintain User Session Cookies
我知道这个问题已经在几个相关的表格中得到了回答,但我绞尽脑汁想了好几天都无济于事。我已经尝试了我能找到的每一个解决方案,这些解决方案似乎甚至是远程相关的。
我正在使用 WKWebView
并加载网站的 url。在该网站上,用户将登录。为了让用户保持登录状态,我们需要使用 cookie 来维护会话。我已经在 Android(使用 webview 和 cookies)上完美地工作了。
我需要为 iOS 计算以下内容:
1) 如何找到 cookie(如果它已经存在)并用 URLRequest
.
发送它
2) 如何确保在打开和关闭应用程序之间保留 cookie。
这段代码对我有用 -
在 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)
好的,几个月后回到这个话题:/
这太简单了。在我嵌入 WKWebView 的网站的登录页面中,我没有单击 'remember me' 复选框。我陷入了一个完整的兔子洞,认为它与 cookie/s 有关,因为该网站从未被保存过,但我从来没有真正指示它这样做。
希望对大家有所帮助。我的脸因多次面部护理而瘀伤。
我知道这个问题已经在几个相关的表格中得到了回答,但我绞尽脑汁想了好几天都无济于事。我已经尝试了我能找到的每一个解决方案,这些解决方案似乎甚至是远程相关的。
我正在使用 WKWebView
并加载网站的 url。在该网站上,用户将登录。为了让用户保持登录状态,我们需要使用 cookie 来维护会话。我已经在 Android(使用 webview 和 cookies)上完美地工作了。
我需要为 iOS 计算以下内容:
1) 如何找到 cookie(如果它已经存在)并用 URLRequest
.
2) 如何确保在打开和关闭应用程序之间保留 cookie。
这段代码对我有用 -
在 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)
好的,几个月后回到这个话题:/
这太简单了。在我嵌入 WKWebView 的网站的登录页面中,我没有单击 'remember me' 复选框。我陷入了一个完整的兔子洞,认为它与 cookie/s 有关,因为该网站从未被保存过,但我从来没有真正指示它这样做。
希望对大家有所帮助。我的脸因多次面部护理而瘀伤。