Flutter中如何让DefaultCacheManager下载文件时忽略证书
在Flutter中使用DefaultCacheManager下载文件时,遇到SSL证书验证失败的问题。如何配置DefaultCacheManager使其在下载过程中忽略证书验证?目前尝试设置HttpOverrides.global为自定义的HttpOverrides子类,但似乎不生效。请问正确的实现方式是什么?需要兼容Android和iOS平台。
2 回复
在Flutter中,使用DefaultCacheManager下载文件时忽略证书,可以通过自定义HttpOverride实现。在main.dart中设置:
class MyHttpOverrides extends HttpOverrides {
@override
HttpClient createHttpClient(SecurityContext? context) {
return super.createHttpClient(context)
..badCertificateCallback =
(X509Certificate cert, String host, int port) => true;
}
}
void main() {
HttpOverrides.global = MyHttpOverrides();
runApp(MyApp());
}
这样即可忽略证书验证。
更多关于Flutter中如何让DefaultCacheManager下载文件时忽略证书的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter中,让DefaultCacheManager下载文件时忽略证书验证,可以通过自定义HttpClient实现。以下是具体步骤:
- 创建自定义HttpOverrides:
重写
createHttpClient方法,配置HttpClient忽略证书错误。
import 'dart:io';
import 'package:flutter/foundation.dart';
class MyHttpOverrides extends HttpOverrides {
@override
HttpClient createHttpClient(SecurityContext? context) {
return super.createHttpClient(context)
..badCertificateCallback =
(X509Certificate cert, String host, int port) => true;
}
}
- 在应用初始化时设置:
在
main()函数中设置全局HttpOverrides。
void main() {
HttpOverrides.global = MyHttpOverrides();
runApp(MyApp());
}
- 使用DefaultCacheManager: 现在DefaultCacheManager会自动使用这个配置,忽略证书验证。
final file = await DefaultCacheManager().getSingleFile(url);
注意事项:
- 这会影响整个应用的HTTP请求,仅建议在开发或测试环境使用。
- 生产环境中应使用有效证书,忽略证书会带来安全风险。
通过以上步骤,即可让DefaultCacheManager在下载文件时跳过证书验证。

