📅  最后修改于: 2023-12-03 15:42:08.668000             🧑  作者: Mango
在使用 Dart 开发网络应用时,常常会遇到“错误状态不安全的 http 不允许振动”这样的错误。这篇文章将介绍这种错误的原因以及如何解决。
这种错误的原因是 Dart 的网络库(dart:io
)执行了一些安全性检查,比如防止使用不安全的 http
协议来传输敏感信息。如果一个应用程序尝试使用不安全的协议(http
),并且这个协议不是在一个安全的上下文中被使用,那么 Dart 就会抛出一个 HttpException
异常,并提示“错误状态不安全的 http 不允许颤动”。
为了解决这个错误,可以通过在 HttpClient
对象上设置 badCertificateCallback
属性,允许不安全的连接。这个属性是一个回调函数,当连接到一个不安全的站点时,它会接收一个 X509Certificate
对象,并返回一个 bool
值。如果这个值是 true
,则说明连接是可信的,否则就会抛出 HttpException
异常。以下是一个示例:
import 'dart:io';
void main() async {
var client = HttpClient()
..badCertificateCallback =
((X509Certificate cert, String host, int port) => true);
var request = await client.getUrl(Uri.parse('http://example.com'));
var response = await request.close();
await response.drain();
client.close();
}
在这个例子中,我们创建了一个 HttpClient
对象,并将其 badCertificateCallback
属性设置为始终返回 true
。这样,我们就可以在不安全的环境中使用不安全的 http
协议了。
错误状态不安全的 http 不允许颤动是 Dart 开发网络应用时常见的错误。要解决这个问题,可以通过在 HttpClient
对象上设置 badCertificateCallback
属性来允许不安全的连接。但是,为了保护你的用户和应用程序的安全,建议在可能的情况下使用安全的 https
协议。