Magazyny danych proxy WKWebView w iOS 17+ i macOS 14+
W systemach iOS 17 lub macOS 14 i nowszych ustaw proxyConfigurations przed utworzeniem i nawigacją widoku, wraz z poświadczeniami, gdy pośrednik CONNECT ich wymaga.
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)
}Zwrócony widok korzysta z dedykowanego, nietrwałego WKWebsiteDataStore. Załaduj docelową witrynę przez ten widok. Użyj konta pośrednika lub pomiń applyCredential dla proxy, które nie wymaga żadnego. Dla tej nieuwierzytelnionej gałęzi HTTP lista proxy HTTP udostępnia kandydatów na punkty końcowe magazynu danych.
Każdy widok współdzielący ten magazyn współdzieli jego politykę proxy. Ten dedykowany magazyn ma również efemeryczne dane witryn, więc nie dziedziczy istniejącego logowania do witryny innego widoku.
Utrzymuj konfigurację przed nawigacją. WebKit ostrzega, że zmiana konfiguracji proxy magazynu może przerwać jego bieżącą pracę sieciową.
Osobne pobranie przez URLSession, a następnie loadHTMLString obejmuje tylko to pobranie HTML. Obrazy, skrypty i późniejsza nawigacja nadal korzystają z sieci widoku; magazyn jest publicznym haczykiem do konfiguracji tej trasy.