WKWebView-proxygegewensstore op iOS 17+ en macOS 14+
Stel op iOS 17 of macOS 14 en later proxyConfigurations voordat die aansig geskep en genavigeer word, met geloofsbriewe wanneer die CONNECT-tussenparty dit nodig het.
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 teruggekeerde aansig gebruik 'n toegewyde nie-persistente WKWebsiteDataStore. Laai die beoogde webwerf deur daardie aansig. Gebruik die tussenparty se rekening of laat applyCredential weg vir 'n proxy wat geen vereis nie. Vir daardie ongeverifieerde HTTP-tak bied die HTTP-proksielys kandidaat-eindpunte vir die gegewensstore.
Elke aansig wat hierdie store deel, deel sy proxybeleid. Hierdie toegewyde store het ook efemere webwerfdata, dus erf dit nie 'n ander aansig se bestaande webwerfaanmelding nie.
Hou die konfigurasie voor navigasie. WebKit waarsku dat die verandering van 'n store se proxykonfigurasie sy huidige netwerkverkeer kan onderbreek.
'n Aparte URLSession-onttrekking gevolg deur loadHTMLString dek slegs daardie HTML-onttrekking. Beelde, skripte en latere navigasie gebruik steeds die aansig se netwerk; die store is die openbare haak om daardie roete te konfigureer.