WKWebView-Proxy-Datenspeicher unter iOS 17+ und macOS 14+
Legen Sie unter iOS 17 oder macOS 14 und später proxyConfigurations fest, bevor Sie die Ansicht erstellen und navigieren, mit Anmeldedaten, wenn der CONNECT-Vermittler sie benötigt.
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)
}Die zurückgegebene Ansicht verwendet einen dedizierten nicht persistenten WKWebsiteDataStore. Laden Sie die gewünschte Website über diese Ansicht. Verwenden Sie das Konto des Vermittlers, oder lassen Sie applyCredential für einen Proxy weg, der keine Anmeldedaten benötigt. Für diesen nicht authentifizierten HTTP-Zweig bietet die HTTP-Proxy-Liste Kandidaten-Endpunkte für den Datenspeicher.
Jede Ansicht, die diesen Speicher teilt, teilt seine Proxy-Richtlinie. Dieser dedizierte Speicher hat außerdem flüchtige Website-Daten, sodass er eine bestehende Website-Anmeldung einer anderen Ansicht nicht erbt.
Halten Sie die Konfiguration vor der Navigation. WebKit warnt, dass das Ändern der Proxy-Konfiguration eines Speichers seine aktuelle Vernetzung unterbrechen kann.
Ein separater URLSession-Abruf, gefolgt von loadHTMLString, deckt nur diesen HTML-Abruf ab. Bilder, Skripte und spätere Navigation nutzen weiterhin die Vernetzung der Ansicht; der Speicher ist der öffentliche Haken, um diese Route zu konfigurieren.