Penyimpanan data proxy WKWebView di iOS 17+ dan macOS 14+
Di iOS 17 atau macOS 14 dan lebih baru, atur proxyConfigurations sebelum membuat dan menavigasi tampilan, dengan kredensial saat perantara CONNECT membutuhkannya.
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)
}Tampilan yang dikembalikan memakai WKWebsiteDataStore khusus yang tidak persisten. Muat situs web yang dimaksud melalui tampilan itu. Gunakan akun perantara atau hilangkan applyCredential untuk proxy yang tidak memerlukan kredensial apa pun. Untuk cabang HTTP tanpa autentikasi itu, daftar proxy HTTP menyediakan titik akhir kandidat untuk penyimpanan data.
Setiap tampilan yang berbagi penyimpanan ini berbagi kebijakan proxy-nya. Penyimpanan khusus ini juga memiliki data situs web sementara, sehingga tidak mewarisi login situs web yang sudah ada dari tampilan lain.
Jaga konfigurasi sebelum navigasi. WebKit memperingatkan bahwa mengubah konfigurasi proxy penyimpanan dapat mengganggu jaringan yang sedang berjalan.
Pengambilan URLSession terpisah yang diikuti loadHTMLString hanya mencakup pengambilan HTML itu. Gambar, skrip, dan navigasi berikutnya tetap memakai jaringan tampilan; penyimpanan adalah kait publik untuk mengonfigurasi rute itu.