You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级Flutter2.5/Dart2.14后POST请求证书验证失败及重写方法报错

问题原因

Dart 2.12及以上版本全面推行空安全规范,HttpOverrides类的createHttpClient方法入参SecurityContext被调整为可空类型SecurityContext?,原有代码中使用不可空类型的入参不符合父类方法定义,导致重载失效,自定义的证书校验逻辑没有生效,最终触发CERTIFICATE_VERIFY_FAILED错误。

修复方案

仅需要调整createHttpClient方法的入参类型为可空类型即可,修改后的完整代码如下:

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());
}

注意事项

  • 上述代码中badCertificateCallback直接返回true的逻辑会绕过所有HTTPS证书校验,仅可用于测试环境调试,禁止在生产环境使用,否则会存在严重的网络安全风险。
  • 如果生产环境需要处理自签名证书的场景,建议在回调中添加证书指纹校验逻辑,仅放行符合预期的合法自签名证书。

内容的提问来源于stack exchange,提问作者Brice Canti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 04:09:04