Flutter忽略Https、WSS证书验证
使用Dio单独忽略Https证书验证
Dio _dio = Dio();
_dio.options.baseUrl = UrlConfig.BASE_URL;
_dio.options.connectTimeout = 5000;
_dio.options.receiveTimeout = 3000;
//忽略Https校验
(_dio.httpClientAdapter as DefaultHttpClientAdapter).onHttpClientCreate =
(HttpClient client) {
client.badCertificateCallback =
(X509Certificate cert, String host, int port) {
return true;
};
};
_dio.interceptors.add(HttpInterceptor.getInstance());
全局忽略Https证书验证
由于项目需求需要,在使用忽略Https证书验证的过后,连接websocket时使用的是wss地址,故而也需要忽略证书验证,不然会报CERTIFICATE_VERIFY_FAILED错误,方式如下:
class GlobalHttpOverrides extends HttpOverrides {
@override
HttpClient createHttpClient(SecurityContext context) {
// TODO: implement createHttpClient
return super.createHttpClient(context)
..badCertificateCallback =
(X509Certificate cert, String host, int port) => true;
}
}
使用的时候,在main方法当中调用
HttpOverrides.global = GlobalHttpOverrides();
如果需要设置全局的,则不需要单独为dio设置证书忽略;
另外,我使用的websocket连接库是web_socket_channel: ^1.1.0
;对于全局忽略证书验证,我个人觉得还不是很好,是否有另外的方式单独在为连接websocket时,忽略证书验证呢,而不通过全局的忽略去实现效果???
参考:how to solve flutter CERTIFICATE_VERIFY_FAILED error while performing a POST request?