iOS 17+ 및 macOS 14+의 WKWebView 프록시 데이터 저장소
iOS 17 또는 macOS 14 이상에서는 뷰를 생성하고 탐색하기 전에 proxyConfigurations를 설정하고, CONNECT 중개자가 자격 증명을 필요로 할 때 함께 전달합니다.
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)
}반환된 뷰는 전용 비영구 WKWebsiteDataStore을 사용합니다. 원하는 웹사이트는 그 뷰를 통해 불러오세요. 중개자의 계정을 사용하거나 자격 증명이 필요 없는 프록시라면 applyCredential을 생략합니다. 인증이 없는 이 HTTP 분기에서는 HTTP 프록시 목록이 데이터 저장소용 후보 엔드포인트를 제공합니다.
이 저장소를 공유하는 모든 뷰는 해당 프록시 정책을 공유합니다. 이 전용 저장소는 임시 웹사이트 데이터도 가지므로 다른 뷰의 기존 웹사이트 로그인을 상속하지 않습니다.
구성은 탐색보다 앞서 유지하세요. WebKit은 저장소의 프록시 구성을 변경하면 현재 네트워킹이 중단될 수 있다고 경고합니다.
별도의 URLSession 가져오기와 이어지는 loadHTMLString은 해당 HTML 가져오기만 처리합니다. 이미지, 스크립트, 이후 탐색은 여전히 뷰의 네트워킹을 사용합니다. 저장소는 그 경로를 구성하는 공개 훅입니다.