ios - 如何为WKWebView设置代理?

标签 ios swift nsurlsession wkwebview nsurlrequest

我正在使用WKWebView打开网页,现在我需要为特定的URL设置代理。
我知道如何使用代理发送请求,只需使用URLSession如下所示。

let proxyHost = "1.2.3.4"
let proxyPort = 9000
let proxyConfiguration = URLSessionConfiguration.default
proxyConfiguration.connectionProxyDictionary = [
            kCFNetworkProxiesHTTPEnable: true,
            kCFNetworkProxiesHTTPProxy: proxyHost,
            kCFNetworkProxiesHTTPPort: proxyPort,
]
let session = URLSession(configuration: proxyConfiguration)


但是没有WKWebView的API可以接收URLSession或类似代理配置的内容。
剂量有人知道怎么做吗?
提前致谢。

最佳答案

您可以使用WKNavigationDelegate

例如

extension MyWKWebView: WKNavigationDelegate {
    func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {

        print("==================================")
        print("decidePolicyFor - navigationAction")
        print(webView.url?.absoluteString as Any)
        print(navigationAction.request.allHTTPHeaderFields)
        print("==================================")

        if isRequestOnInterceptList(navigationAction.request) {
            let nreq = modifyRequestUrl(navigationAction.request)
            //webView.load(nreq)
            webView.stopLoading()
            decisionHandler(.cancel)
        } else {
            decisionHandler(.allow)
        }
    }
}


在modifyRequestUrl()中,您可以设置代理

关于ios - 如何为WKWebView设置代理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49228734/

相关文章:

ios - 无法使用mockURLSession调用非函数类型 'URLSession'错误的值

ios - 使用变量设置 UISlider 的值

ios - 从 Xcode 重新安装应用程序时 iPhone 模拟器报告错误

ios - NSDateFormatter 将 rails 字符串转换为 NSDate 返回 nil?

swift - 枚举在自定义初始化程序中不起作用

ios - 文件存在于主线程上,但后台线程表示不存在(iOS)

ios - 在 iOS 中发出 HTTP 请求的正确位置在哪里?

ios - Firebase crashlytics 不报告崩溃

ios - 这是实体的属性吗?

ios - 由 base64encodeString 组成的 NSMutableRequest 正文在作为字符串发送时被截断