如何使用带有代理的 webview flutter?
How to use webview flutter with proxy?
我正在使用 Webview Flutter 包将一些网站嵌入到我的 flutter 项目中。对于某些网站我需要使用代理服务器(ip:port)来连接(国家访问限制)。如何将代理服务器添加到我的项目中并通过它使用 Webview Flutter 包?
不幸的是,Flutter 会忽略您的设备代理设置,因此您需要在您的 Flutter 应用中覆盖它,如下所示:
class MyProxyHttpOverride extends HttpOverrides {
@override
HttpClient createHttpClient(SecurityContext context) {
return super.createHttpClient(context)
..findProxy = (uri) {
return "PROXY localhost:8888;";
}
..badCertificateCallback =
(X509Certificate cert, String host, int port) => true;
}
}
// In your main.dart
HttpOverrides.global = MyProxyHttpOverride();
当然,您需要将 localhost:8888
更改为任何您的代理设置 - 在您的情况下,这可能必须是动态的,用户可以更改。
我写了一篇关于这个解决方案的更详细的文章here - 虽然这是关于让它与 Charles Proxy 一起工作,但总体问题和解决方案是相同的。
我正在使用 Webview Flutter 包将一些网站嵌入到我的 flutter 项目中。对于某些网站我需要使用代理服务器(ip:port)来连接(国家访问限制)。如何将代理服务器添加到我的项目中并通过它使用 Webview Flutter 包?
不幸的是,Flutter 会忽略您的设备代理设置,因此您需要在您的 Flutter 应用中覆盖它,如下所示:
class MyProxyHttpOverride extends HttpOverrides {
@override
HttpClient createHttpClient(SecurityContext context) {
return super.createHttpClient(context)
..findProxy = (uri) {
return "PROXY localhost:8888;";
}
..badCertificateCallback =
(X509Certificate cert, String host, int port) => true;
}
}
// In your main.dart
HttpOverrides.global = MyProxyHttpOverride();
当然,您需要将 localhost:8888
更改为任何您的代理设置 - 在您的情况下,这可能必须是动态的,用户可以更改。
我写了一篇关于这个解决方案的更详细的文章here - 虽然这是关于让它与 Charles Proxy 一起工作,但总体问题和解决方案是相同的。