WKWebView proxy adattárak iOS 17+ és macOS 14+ rendszeren
iOS 17 vagy macOS 14 és újabb rendszeren a nézet létrehozása és navigálása előtt állítsa be a proxyConfigurations értéket, hitelesítő adatokkal, amikor a CONNECT közvetítő igényli azokat.
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)
}A visszaadott nézet egy dedikált, nem állandó WKWebsiteDataStore elemet használ. A kívánt webhelyet ezen a nézeten keresztül töltse be. Használja a közvetítő fiókját, vagy hagyja ki a applyCredential hívást olyan proxy esetén, amely nem igényel hitelesítő adatot. Ehhez a nem hitelesített HTTP ághoz a HTTP proxy lista kínál jelölt végpontokat az adattár számára.
Minden nézet, amely ezt az adattárat használja, annak proxyházirendjét is használja. Ennek a dedikált adattárnak efemer webhelyadatai is vannak, ezért nem örökli egy másik nézet meglévő webhely-bejelentkezését.
Tartsa a konfigurációt a navigáció előtt. A WebKit figyelmeztet, hogy egy adattár proxykonfigurációjának módosítása megszakíthatja annak jelenlegi hálózatkezelését.
Egy külön URLSession lekérés, amelyet a loadHTMLString követ, csak azt a HTML-lekérést fedi le. A képek, a szkriptek és a későbbi navigáció továbbra is a nézet hálózatkezelését használják; az adattár a nyilvános kampó az útvonal beállításához.