簡體   English   中英

iOS Swift WKWebView 維護用戶會話 Cookie

[英]iOS Swift WKWebView Maintain User Session Cookies

我知道這已經以幾種相關的形式得到了回答,但是我幾天來一直在絞盡腦汁試圖解決這個問題,但無濟於事。 我已經嘗試了我能找到的每一個解決方案,這些解決方案似乎甚至是遠程相關的。

我正在使用WKWebView並加載網站的網址。 在該網站上,用戶將登錄。為了保持用戶登錄狀態,我們需要使用 cookie 維護會話。 我已經在 Android 上完美運行(使用 webview 和 cookie)。

我需要為 iOS 解決以下問題:

1) 如何找到 cookie(如果它已經存在)並將其與URLRequest一起發送。

2) 如何確保在打開和關閉應用程序之間維護 cookie。

好的,幾個月后回到這個:/

簡單得可笑。 在我嵌入 WKWebView 的網站的登錄頁面中,我沒有點擊“記住我”復選框。 我陷入了一個完整的兔子洞,認為這與網站的 cookie/s 從未被保存有關,但我從未真正指示它這樣做。

希望能幫助到任何人。 我的臉因多次捂臉而瘀傷。

此代碼對我有用-

在 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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM