Magazine de date proxy WKWebView pe iOS 17+ și macOS 14+
Pe iOS 17 sau macOS 14 și versiunile ulterioare, setați proxyConfigurations înainte de a crea și naviga vizualizarea, cu credențiale când intermediarul CONNECT le necesită.
import Network
import WebKit
@available(iOS 17.0, macOS 14.0, *)
@MainActor
func makeWebView(username: String, password: String) -> WKWebView {
let endpoint = NWEndpoint.hostPort(
host: "proxy.example.net", port: 8080)
let proxy = ProxyConfiguration(
httpCONNECTProxy: endpoint, tlsOptions: nil)
proxy.applyCredential(username: username, password: password)
let store = WKWebsiteDataStore.nonPersistent()
store.proxyConfigurations = [proxy]
let configuration = WKWebViewConfiguration()
configuration.websiteDataStore = store
return WKWebView(frame: .zero, configuration: configuration)
}Vizualizarea returnată folosește un WKWebsiteDataStore dedicat, nepersistent. Încărcați site-ul dorit prin acea vizualizare. Folosiți contul intermediarului sau omiteți applyCredential pentru un proxy care nu necesită niciunul. Pentru acea ramură HTTP neautentificată, lista de proxy HTTP oferă puncte finale candidate pentru magazinul de date.
Fiecare vizualizare care partajează acest magazin îi partajează politica de proxy. Acest magazin dedicat are și date efemere de site, așa că nu moștenește autentificarea existentă a altei vizualizări.
Păstrați configurația înainte de navigare. WebKit avertizează că schimbarea configurației de proxy a unui magazin poate întrerupe rețeaua curentă a acestuia.
O preluare URLSession separată urmată de loadHTMLString acoperă doar acea preluare HTML. Imaginile, scripturile și navigarea ulterioară folosesc în continuare rețeaua vizualizării; magazinul este cârligul public pentru configurarea acelei rute.