Flutter web http错误:XMLHttpRequest错误

Posted

技术标签:

【中文标题】Flutter web http错误:XMLHttpRequest错误【英文标题】:Flutter web http Error: XMLHttpRequest error 【发布时间】:2022-01-07 22:42:21 【问题描述】:

当我尝试对 .net 后端执行简单的发布请求时,我一直在努力解决 http 请求问题。后端设置了 CORS,我经历了许多堆栈溢出帖子,试图解决这个问题,但它仍然给我同样的错误。当我在 SwaggerUI(与邮递员相同)上测试 API 时,一切正常。我不明白。我在这里缺少什么吗?谢谢。

代码:

import 'dart:convert';
import 'package:http/http.dart' as http;

abstract class ParentRemoteDataSource 
  Future<void> create(required Map<String, dynamic> parent);


class ParentRemoteDataSourceImpl implements ParentRemoteDataSource 
  final http.Client _client = http.Client();
  final String _url = "http://localhost:5000/api/member/create";

  @override
  Future<void> create(required Map<String, dynamic> parent) async 
    final Uri uri = Uri.parse(_url);
    final Map<String, String> headers = "Content-Type": "application/json";

    final http.Response response = await _client.post(
      uri,
      headers: headers,
      body: jsonEncode(parent),
    );
    print(response.body);
  

上面的代码在按下 UI 部分的按钮时执行。 发布请求的错误为:ERR_CERT_AUTHORITY_INVALID ,下面写着:Uncaught (in promise) Error: XMLHttpRequest error.

【问题讨论】:

ERR_CERT_AUTHORITY_INVALID 表示无法验证 HTTPS 证书,因此连接不安全,但是在您的代码中,您使用的是 HTTP 而不是 HTTPS。 这能回答你的问题吗? IN Flutter Web getting 'XMLHttpRequest' error while making HTTP call 这为我解决了:*** 【参考方案1】:

您可以通过这种方式避免该错误:

创建自定义 httpOverrides:

class MyHttpOverrides extends HttpOverrides
  @override
  HttpClient createHttpClient(SecurityContext context) 
    return super.createHttpClient(context)
      ..badCertificateCallback = (X509Certificate cert, String host, int port)=> true;
  

然后覆盖main:

void main() async 
  HttpOverrides.global = new MyHttpOverrides();
...

【讨论】:

以上是关于Flutter web http错误:XMLHttpRequest错误的主要内容,如果未能解决你的问题,请参考以下文章

向本地服务器发送请求时出现 Flutter Web XMLHttpRequest 错误

无法在 Flutter 中运行 web api 文件

Flutter dio不适用于flutter web中的post请求

在 WEB 中运行 Flutter:错误:XMLHttpRequest 错误

使用 flutter_twitter 包的 Flutter Web Twitter 登录错误。我错过了啥?

在 Flutter 导入错误中启用 Web