Note: It turns out that this had nothing to do with flutter and everything to do with the fact that I had set the API gateway to a Lambda Proxy

我试图从一个Flatter web应用程序中访问一个API端点,每次它出错时,都会出现以下错误.

获取传感器数据时出错:DioError[DioErrorType.RESPONSE]: XMLHttpRequest错误.

我知道这里有几个问题(比如thisthis)正在讨论这个问题,解决方案似乎是在服务器端启用CORS支持.我正在使用AWS API网关构建API,我按照these条说明从我的API中启用CORS支持.下面是我在API网关控制台上的CORS设置.

enter image description here

"Access-Control-Allow-Header"中的文本为

‘内容类型,X-AMZ-日期,授权,X-Api-密钥,X-AMZ-安全-令牌’

在API网关上启用CORS似乎没有帮助,当我试图点击API时,我的Ffltter Web应用程序仍然收到相同的错误.

有趣的是,如果我从Chrome点击API(即将API URL粘贴到浏览器上并按Enter键),API就可以正常工作.只有当我try 从Ffltter Web应用程序点击API时,它才会失败.

问:如何在我的API网关中启用CORS支持,以便我的Ffltter Web应用程序可以使用该API?

推荐答案

这对我来说很有效,我在lambda函数上添加了下面的标题

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)
};

Flutter相关问答推荐

Riverpod生成器和生成util类

Flutter -如何停止块监听程序在后台堆栈中运行

TextFormfield无法与自动路由一起正常工作

如何防止onTapCancel由子元素触发?

BlocBuilder仅生成一次,并在后续发出时停止重建

如何在Flutter 安全存储器中存储对象值?

在Flutter 中创建自定义形状

Firestore 不会取代 map

没有固定宽度的小部件可以约束文本小部件吗?

我无法找到修复此错误的位置,指出无法使用静态访问来访问实例成员

Firestore 使用 Flutter 以奇怪的格式保存数据

升级到 Flutter 3.10 后,Flutter 键盘填充不起作用. Flutter 3.10 如何防止 BottomSheet 被键盘覆盖?

忽略异步函数上的 context.mounted 访问 linting 错误是否安全?

转换函数上传文件上传Uint8List

如何在 Flutter 中的 BackdropFilter.blur 中制作一个 100x100 的清晰孔

如何在 flutter 中同时使用 ButtonStyle() 和 ElevatedButton.styleFrom() ?

Android Studio - Electric Eel 2022.1.1 更新 destruct 了 dart 文件图标

Flutter Bloc 使用 Cubit 监听流和emits 状态

Flutter Serverpod 在示例项目上返回 400 错误

这在Flutter 的 pubspec 文件中是什么意思?