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)
}

Grąžintas rodinys naudoja atskirą netvirtą WKWebsiteDataStore. Įkelkite norimą svetainę per tą rodinį. Naudokite tarpininko paskyrą arba praleiskite applyCredential tarpiniam serveriui, kuriam nereikia jokių duomenų. Šiai neautentifikuotai HTTP šakai HTTP tarpinių serverių sąrašas siūlo kandidatines galines vietas duomenų saugyklai.

Kiekvienas rodinys, bendrinantis šią saugyklą, bendrina ir jos tarpinio serverio politiką. Ši skirtoji saugykla taip pat turi laikinus svetainės duomenis, todėl ji nepaveldi kito rodinio esamo svetainės prisijungimo.

Laikykite konfigūraciją prieš navigaciją. WebKit įspėja, kad saugyklos tarpinio serverio konfigūracijos keitimas gali nutraukti dabartinį jos tinklą.

Atskiras URLSession užklausimas ir po jo loadHTMLString apima tik tą HTML užklausą. Vaizdai, scenarijai ir vėlesnė navigacija vis dar naudoja rodinio tinklą; saugykla yra viešas kablys tai krypčiai konfigūruoti.

Susiję straipsniai