Ich entwickle eine App, die gemischte native View-Controller und UIWebView
verwendet. App-Anmeldung wird von API gehandhabt, und ich habe eine Dienstprogrammfunktion, um das Authentifizierungs-Token in einem Cookie in HTTPCookieStorage
sowie in einem persistenten Benutzermodell zu speichern.WKWebView Wie Sie Authentifizierungs-Cookies von HTTPCookieStorage hinzufügen
Jetzt möchte ich auf WKWebView
aktualisieren, aber es lädt Cookies nicht automatisch von HTTPCookieStorage
wie UIWebView
.
fand ich einen Weg, um die Reaktion von Cookies von einer Antwort here und ich die Antwort ändern kann, speichern auch mein Benutzermodell die Auth-Token zu speichern, aber ich bin nicht sicher, wie ich die Cookies für eine neue Anforderung verwenden kann. Ich muss nur den Cookie zum ersten Laden hinzufügen, da ich die Navigation in der Webansicht deaktivieren werde.
Gibt es eine Möglichkeit, den Cookie-Wert der Kopfzeile oder eine andere Lösung hinzufügen?
Hier ist der Code, den ich verwenden werde, um den Cookie aus der Antwort zu erhalten.
func webView(_ webView: WKWebView, decidePolicyFor navigationResponse: WKNavigationResponse, decisionHandler: @escaping (WKNavigationResponsePolicy) -> Void) {
if let urlResponse = navigationResponse.response as? HTTPURLResponse,
let url = urlResponse.url,
let allHeaderFields = urlResponse.allHeaderFields as? [String : String] {
let cookies = HTTPCookie.cookies(withResponseHeaderFields: allHeaderFields, for: url)
HTTPCookieStorage.shared.setCookies(cookies , for: urlResponse.url!, mainDocumentURL: nil)
decisionHandler(.allow)
}
}
Dies ist nicht WKWebView. – markhorrocks