WKWebView-proxydatastores op iOS 17+ en macOS 14+
Stel op iOS 17 of macOS 14 en hoger proxyConfigurations in voordat u de weergave aanmaakt en navigeert, met inloggegevens wanneer de CONNECT-tussenpartij ze nodig heeft.
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)
}De geretourneerde weergave gebruikt een toegewijde niet-persistente WKWebsiteDataStore. Laad de beoogde website via die weergave. Gebruik het account van de tussenpartij of laat applyCredential weg voor een proxy die er geen nodig heeft. Voor die niet-geauthenticeerde HTTP-tak biedt de lijst met HTTP-proxies kandidaat-eindpunten voor de datastore.
Elke weergave die deze store deelt, deelt het proxybeleid ervan. Deze toegewijde store heeft ook tijdelijke websitegegevens, dus erft hij de bestaande website-login van een andere weergave niet.
Houd de configuratie vóór de navigatie. WebKit waarschuwt dat het wijzigen van de proxyconfiguratie van een store de huidige netwerkactiviteit kan onderbreken.
Een aparte URLSession-opvraag gevolgd door loadHTMLString dekt alleen die HTML-opvraag. Afbeeldingen, scripts en latere navigatie gebruiken nog steeds de netwerkactiviteit van de weergave; de store is de openbare haak om die route te configureren.