Flutter网络请求拦截插件lehttp_overrides的使用
Flutter网络请求拦截插件lehttp_overrides的使用
简介
lehttp_overrides
是一个Flutter插件,用于解决Android 7.1.1及以下版本中与Let’s Encrypt SSL证书相关的问题。更多详情可以参见这里(意大利语)。
快速开始
为了启用修复功能,你需要在项目的入口处添加如下代码:
import 'package:lehttp_overrides/lehttp_overrides.dart';
import 'package:flutter/material.dart';
import 'dart:io';
void main() {
// 判断当前平台是否为Android
if (Platform.isAndroid) {
HttpOverrides.global = LEHttpOverrides();
}
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: const MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({Key? key, required this.title}) : super(key: key);
final String title;
@override
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;
void _incrementCounter() {
setState(() {
_counter++;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
const Text(
'You have pushed the button this many times:',
),
Text(
'$_counter',
style: Theme.of(context).textTheme.headline4,
),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter,
tooltip: 'Increment',
child: const Icon(Icons.add),
),
);
}
}
这段代码展示了如何在应用程序启动时检查当前平台是否为Android,如果是,则设置HttpOverrides.global
为LEHttpOverrides()
,以应用SSL证书修复。
关键点解释
- ISRG Root X1证书路径:此修复依赖于使用ISRG Root X1证书路径,并通过将ISRG Root X1 CA添加到证书存储中来工作。对于Android > 7.1.1的系统来说,这是无害的,因为系统本身已经包含了这个证书。
- allowExpiredDSTX3参数:
LEHttpOverrides
构造函数有一个可选参数allowExpiredDSTX3
(默认值为false
),它允许接受已过期的DST Root CA X3证书。对于使用OpenSSL >= 1.1的环境,通常不会触发这个检查,但对于旧版Android系统仍然需要它。建议保持此选项关闭,并使用ISRG Root X1证书路径。
总结
通过上述配置,你可以有效地解决Flutter项目中Android 7.1.1及以下版本遇到的Let’s Encrypt SSL证书问题。确保根据实际情况调整配置,并尽可能使用最新的证书路径以获得最佳的安全性和兼容性。
更多关于Flutter网络请求拦截插件lehttp_overrides的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复