WKWebView 的 HTTP 代理支持
HTTP Proxy support with WKWebView
有没有办法配置 WKWebView 通过 HTTP 代理服务器?我知道直接使用 NSURLSession 是可能的,但我想对其进行配置,以便所有通过 WKWebView 浏览器的请求都通过代理。
NSURLSessionConfiguration 有一个直接接口(connectionProxyDictionary)可以做到这一点,所以可以很容易地完成
但是,WkWebView 没有像那样的任何直接接口,它请求、呈现进程外的内容,因此您可以想象 WkWebview 实例与应用程序的其余部分隔离开来
WkWeView 甚至会忽略 NSURLSession 和 NSURLConnection 的 cookies(NSHTTPCookieStorage)、缓存(NSURLCache) 和 Credentials(NSCredentialStorage) 同样这些网络 类 无法访问 WkWebView 实例的 cookies、缓存和凭证。
UIWebView 不会在进程外执行此操作,因此您可以使用 CustomHTTPProtocol 示例中演示的 NSURLProtocol 来代理服务器。
从 iOS 10 开始,WkWebView 中仍然不支持 NSURLProtocol,因此您无法使用 WkWebView 进行代理。
如果您的代理服务器支持隧道 (VPN),那么您可以使用 NetworkExtension.framework 及其 类(NEVPNManager、NEVPNProtocol、NEVPNConnection 等。)通过您的代理服务器引导您应用程序的所有网络流量。
有没有办法配置 WKWebView 通过 HTTP 代理服务器?我知道直接使用 NSURLSession 是可能的,但我想对其进行配置,以便所有通过 WKWebView 浏览器的请求都通过代理。
NSURLSessionConfiguration 有一个直接接口(connectionProxyDictionary)可以做到这一点,所以可以很容易地完成
但是,WkWebView 没有像那样的任何直接接口,它请求、呈现进程外的内容,因此您可以想象 WkWebview 实例与应用程序的其余部分隔离开来
WkWeView 甚至会忽略 NSURLSession 和 NSURLConnection 的 cookies(NSHTTPCookieStorage)、缓存(NSURLCache) 和 Credentials(NSCredentialStorage) 同样这些网络 类 无法访问 WkWebView 实例的 cookies、缓存和凭证。
UIWebView 不会在进程外执行此操作,因此您可以使用 CustomHTTPProtocol 示例中演示的 NSURLProtocol 来代理服务器。
从 iOS 10 开始,WkWebView 中仍然不支持 NSURLProtocol,因此您无法使用 WkWebView 进行代理。
如果您的代理服务器支持隧道 (VPN),那么您可以使用 NetworkExtension.framework 及其 类(NEVPNManager、NEVPNProtocol、NEVPNConnection 等。)通过您的代理服务器引导您应用程序的所有网络流量。