我在几个地方问这个问题,希望比我有更多线索的人可以提供帮助:-)
在 Web 中运行时,我在使用 Flutter 应用程序中的 AdminQueries 函数时遇到问题。
这是我列出组中用户的功能:
Future<void> listAdmin() async {
const path = "/listUsersInGroup";
final query = {
"groupname": "Admins",
};
const apiName = "AdminQueries";
try {
final restOperation = Amplify.API.get(
path,
queryParameters: query,
apiName: apiName,
);
final response = await restOperation.response;
print('GET call succeeded: ${response.decodeBody()}');
} on ApiException catch (e) {
print('GET call failed: $e');
}
}
如果我在 IOS 模拟器中运行该函数它可以工作。如果我在 Chrome(网络)中运行它,它会崩溃并出现以下错误:
Error: GET https://########.execute-api.ap-southeast-2.amazonaws.com/dev/listUsersInGroup?groupname=Admins failed: TypeError: Failed to fetch packages/aws_common/src/js/fetch.dart 366:10
这让我很困惑,所以我来这里看看是否有人有想法。我的应用程序的其余部分在网络上运行良好,所以这对我来说是一个症结所在。
干杯
感谢@RichardHeap,他引导我在浏览器中检查 CORS,这就是我的问题。
作为 API 菜鸟 CORS 是我不知道的事情。我希望一旦我发布了我的应用程序并且不在我的测试环境(即本地主机)中运行它,CORS 的事情就不应该让我担心。
我发现这篇文章解决 Flutter Web API CORS 展示了如何在本地开发环境中禁用 CORS 检查,这很适合我。
希望这对遇到这个泡菜的其他人有帮助。