当前位置: 首页 > 知识库问答 >
问题:

使用http post flutter web时出现XMLHttpRequest错误

施玉宸
2023-03-14

在对我的API-AWS API网关进行HTTP post调用时,XMLHttpRequest error.遇到了这个错误。我当前的流程是Flutter Web->API Gateway->Lambda->RDS。

我知道已经有几个与此相关的问题,但正如其中一个答案中建议的那样,添加一些标题来响应lambda。但对我不起作用。

在做了一些研究后,我发现问题是关于CORS。现在禁用cors在chrome是一个临时的修复和建议在这个问题。

一些其他的解决方案,我发现后,研究建议启用cors,在我的API和前端部分,我已经添加了头,但没有一个工作。

fetchData() async {
    String url =
        "myUrl";
    Map<String, String> headers = {
      "Access-Control-Allow-Origin": "*", // Required for CORS support to work
    };
    String json = '{"emailId":"emailId"}';
    http.Response response =
        await http.post(Uri.parse(url), headers: headers, body: json);
    print(response.body);
    return response.body;
  }

解决这个问题的正确方法是什么?

共有1个答案

梁成双
2023-03-14

我已经解决了我的问题,不打算删除这个问题,因为没有很多定义良好的解决方案来解决这个问题。对于使用flutter web和AWS API-Gateway的未来浏览者。

  1. 如果遇到此问题,这意味着它来自后端而不是颤振端
  2. XMLHttpRequest错误。是由CORS引起的

您必须在API网关中启用CORS的问题的解决方案请参见此链接。

return {
    statusCode: 200,
     headers: {
  "Access-Control-Allow-Origin": "*", // Required for CORS support to work
  "Access-Control-Allow-Credentials": true, // Required for cookies, authorization headers with HTTPS
  "Access-Control-Allow-Headers": "Origin,Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token,locale",
  "Access-Control-Allow-Methods": "POST, OPTIONS"
},
    body: JSON.stringify(item)
};
Access to XMLHttpRequest at 'API-URL' from origin 'http://localhost:63773' has been blocked by CORS policy: 
Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.  //this particular line
fetchData() async {
    String url =
        "API-url";
    Map<String, String> headers = {
      "Content-Type": "text/plain",
    };
    String json = '{"emailId":"emailId"}';
    Map<String, String> map = Map();
    map["emailId"] = "sahaj@rootsapp.in";
    http.Response response = await http
        .post(Uri.parse(url), headers: headers, body: jsonEncode(map))
        .then((value) {
      print("onThen> " + value.body.toString());
    }).onError((error, stackTrace) {
      print("onError> " +
          error.toString() +
          " stackTrace> " +
          stackTrace.toString());
    });
  }
 类似资料:
  • 它需要做的是获取用户名和密码,验证它并根据密码给出适当的输出。请帮帮我.也让我知道如果我的怀疑是正确的。另外,我听说在servlet程序中编写html代码不是一个好的做法。我还想知道如何在index.html文件中编写上面的html代码,这应该与该程序预期的行为方式相同。谢了。

  • 大约一到两周前,我就无法使用pip,因为它总是会回退以下错误: 错误:由于环境原因无法安装程序包错误:HTTPSConnectionPool(host='files.pythonhosted.org',port=443):url超过最大重试次数:/packages/1b/e5/552ba6583ab43e12b299458fea94ee23886125b8b8babc91edb03f2ba65/p

  • 编译以下使用Lombok自动生成getter和setter的类时,Checkstyle引发编译错误: 实用工具类不应具有公共或默认构造函数 当Checkstyle没有按照Checkstyle文档中指定的实用程序类定义时,为什么Checkstyle将上面的类归类为实用程序类?即只包含静态方法或字段的类。checkstyle解析的是默认源文本文件还是lombok生成的源文件?

  • 下面是用eclipse IDE编写的Java代码... 线程“main”java.lang.NullPointerException在compile.execute.main(execute.java:17)中出现异常 你能告诉我如何解决这个错误吗?

  • 我的ThymileAF模板中有一个AngularJS属性,看起来像这样: 当Thymeleaf尝试处理此模板时,我得到以下异常: Thymeleaf只是不能很好地处理

  • 我想摆脱这个错误。我读到一个类似的问题,其中一个答案建议我可以使用以下命令禁用验证: 我的确切错误是: 在C:\ path \ guzzle \ src \ Handler \ cURL factory . PHP:187堆栈跟踪:# 0 C:\ path \ guzzle \ src \ Handler \ cURL factory . PHP:187堆栈跟踪:# 0 C:\ path \ gu