【问题标题】:Flutter web http Error: XMLHttpRequest errorFlutter web http错误:XMLHttpRequest错误
【发布时间】: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.

【问题讨论】:

标签: c# .net flutter rest dart


【解决方案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();
...

【讨论】:

    猜你喜欢
    • 2021-03-25
    • 2021-04-12
    • 2020-10-15
    • 2022-08-19
    • 2021-02-04
    • 1970-01-01
    • 2021-06-03
    • 2021-08-22
    • 2021-07-19
    相关资源
    最近更新 更多