Χώροι αποθήκευσης δεδομένων διαμεσολαβητή WKWebView σε iOS 17+ και macOS 14+
Σε 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. Οι εικόνες, τα σενάρια και η επόμενη πλοήγηση εξακολουθούν να χρησιμοποιούν τη δικτύωση της προβολής· ο χώρος είναι το δημόσιο άγκιστρο για τη διαμόρφωση αυτής της διαδρομής.