WKWebView proxy skladišta podataka na iOS 17+ i macOS 14+
Na iOS 17 ili macOS 14 i novijim, postavite proxyConfigurations prije kreiranja i navigacije prikaza, s vjerodajnicama kada ih CONNECT posrednik zahtijeva.
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)
}Vraćeni prikaz koristi namjensku nestalnu WKWebsiteDataStore. Učitajte željenu web lokaciju kroz taj prikaz. Koristite račun posrednika ili izostavite applyCredential za proxy koji ga ne zahtijeva. Za tu neautentificiranu HTTP granu lista HTTP proxyja nudi kandidatne krajnje tačke za skladište podataka.
Svaki prikaz koji dijeli ovo skladište dijeli i njegovu proxy politiku. Ovo namjensko skladište također ima privremene podatke web lokacija, pa ne nasljeđuje postojeću prijavu web lokacije drugog prikaza.
Držite konfiguraciju prije navigacije. WebKit upozorava da promjena proxy konfiguracije skladišta može prekinuti njegovo trenutno umrežavanje.
Odvojeno preuzimanje putem URLSession praćeno loadHTMLString pokriva samo to HTML preuzimanje. Slike, skripte i kasnija navigacija i dalje koriste umrežavanje prikaza; skladište je javna kuka za konfigurisanje te rute.