Magasins de données proxy WKWebView sous iOS 17+ et macOS 14+
Sous iOS 17 ou macOS 14 et versions ultérieures, définissez proxyConfigurations avant de créer et de parcourir la vue, avec des identifiants lorsque l'intermédiaire CONNECT en a besoin.
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)
}La vue renvoyée utilise un WKWebsiteDataStore dédié non persistant. Chargez le site web voulu via cette vue. Utilisez le compte de l'intermédiaire ou omettez applyCredential pour un proxy qui n'en exige aucun. Pour cette branche HTTP non authentifiée, la liste de proxies HTTP fournit des points de terminaison candidats pour le magasin de données.
Chaque vue partageant ce magasin partage sa politique de proxy. Ce magasin dédié contient aussi des données de site éphémères, il n'hérite donc pas de la connexion existante d'une autre vue.
Gardez la configuration avant la navigation. WebKit avertit que modifier la configuration proxy d'un magasin peut interrompre sa mise en réseau en cours.
Une récupération URLSession distincte suivie de loadHTMLString ne couvre que cette récupération HTML. Les images, scripts et la navigation ultérieure utilisent toujours la mise en réseau de la vue ; le magasin est le point d'accroche public pour configurer cette route.