ທີ່ເກັບຂໍ້ມູນພຣັອກຊີ 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 ນັ້ນເທົ່ານັ້ນ. ຮູບພາບ, ສະຄຣິບ ແລະ ການນຳທາງຕໍ່ໄປ ຍັງໃຊ້ເຄືອຂ່າຍຂອງມຸມມອງ; ທີ່ເກັບຄືຕະຂໍສາທາລະນະສຳລັບຕັ້ງຄ່າເສັ້ນທາງນັ້ນ.