📜  错误状态不安全的 http 不允许颤动 - Dart (1)

📅  最后修改于: 2023-12-03 15:42:08.668000             🧑  作者: Mango

错误状态不安全的 http 不允许颤动 - Dart

在使用 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 协议。