我遇到了一个问题:我将 flutter 与 node.js API 集成。调试器显示我收到了 2 个请求。 1 是 GET,1 是 OPTIONS。对于 GET 请求,成功状态为 200,返回正文数据,但对于 OPTIONS,请求成功状态为 200,但没有数据。我当前的页面显示小部件错误。
[API file]
- seen like this returned the data
[https://i.stack.imgur.com/xWmKn.png][1]
result
[https://i.stack.imgur.com/pGblN.png][1]
[GET request]
- Status success = 200 return data
[https://i.stack.imgur.com/trL1P.png][1]
[OPTIONS request]
- Status success = 200 but no data
[https://i.stack.imgur.com/H8hG7.png][1]
我对 Flutter 和 nodejs 还是很陌生。我从这里遵循教程 https://youtu.be/rXLwX3uUYjA?list=PL7zgwanvi8_MIQwPHbhCL3xulZIGxabKo
错误来自 widget_home_categories.dart
Widget _categoriesList(WidgetRef ref) {
final categories = ref.watch(
categoriesProvider(
PaginationModel(page: 1, pageSize: 10),
),
);
return categories.when(
data: (list) {
return _buildCategoryList(list!);
},
error: (_, __) => const Center(
child: Text("ERR1a"),
),
loading: () => const Center(child: CircularProgressIndicator()),
);
}
回答1
您看到的是一个 https://en.wikipedia.org/wiki/Cross-origin_resource_sharing 请求,因为您在浏览器中运行它并且浏览器会为您执行此操作。如果您将代码作为应用程序或桌面应用程序运行,您将不会看到这一点,因为这样您的应用程序代码就不必经过任何层来为您做它认为“正确”的事情。
但是,您的实际调用似乎已被 CORS 调用批准并通过并成功返回数据。
所以我们能给你的唯一帮助就是不要忽视你的编译器给你的帮助,而是用它来找出问题所在。我很确定,其中一个参数将包含答案:
error: (_, __) => const Center(
child: Text("ERR1a"),
),
您可能应该打印它们,而不是一些没有帮助的通用文本。