WKWebView-proxydatalagre på iOS 17+ og macOS 14+
På iOS 17 eller macOS 14 og nyere skal du angive proxyConfigurations, før visningen oprettes og navigeres, med legitimationsoplysninger når CONNECT-mellemleddet har brug for dem.
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)
}Den returnerede visning bruger et dedikeret ikke-permanent WKWebsiteDataStore. Indlæs det ønskede websted via denne visning. Brug mellemleddets konto, eller udelad applyCredential for en proxy, der ikke kræver nogen. For den uautentificerede HTTP-gren giver HTTP-proxylisten kandidat-slutpunkter til datalageret.
Enhver visning, der deler dette lager, deler dets proxypolitik. Dette dedikerede lager har også midlertidige webstedsdata, så det arver ikke en anden visnings eksisterende webstedslogin.
Hold konfigurationen foran navigationen. WebKit advarer om, at ændring af et lagers proxykonfiguration kan afbryde dets aktuelle netværk.
Et separat URLSession-hent efterfulgt af loadHTMLString dækker kun det HTML-hent. Billeder, scripts og senere navigation bruger stadig visningens netværk; lageret er den offentlige krog til at konfigurere den rute.