http - 如何在 Flutter For Web 上发出 HTTP 请求?
问题描述
我正在构建一个对 NodeJS 服务器执行 HTTP 请求的应用程序,但是当我执行 HTTP 请求时,结果如下:
Access to XMLHttpRequest at 'http://127.0.0.1:8000/' from origin 'http://127.0.0.1:8080' 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.
和
Uncaught (in promise) Error: XMLHttpRequest error.
dart:sdk_internal 41864:30 get current
package:http/src/packages/http/src/browser_client.dart 84:22 <fn>
dart:sdk_internal 99587:96 <fn>
at Object.dart.createErrorWithStack (dart_sdk.js:4617)
at Object.async._rethrow (dart_sdk.js:28723)
at async._AsyncCallbackEntry.new.callback (dart_sdk.js:28719)
at Object.async._microtaskLoop (dart_sdk.js:25352)
at async._startMicrotaskLoop (dart_sdk.js:25358)
at dart_sdk.js:25433
这是我用来发出 HTTP 请求的代码'package:http/http.dart' as http;
:
void requestGet(String endpoint, Callback cb) async {
return await http.get(Uri.encodeFull(url + endpoint),
headers: {"Accept": "application/json"}).then((http.Response response) {
print(response.body);
});
}
void requestPost(String endpoint, Map data, Callback cb) async {
return await http.post(Uri.encodeFull(url + endpoint),
body: data,
headers: {"Accept": "application/json"}).then((http.Response response) {
print(response.body);
});
}
解决方案
通过在我的 NodeJS 服务器中启用 CORS 解决了重新保护 HTTP 请求的问题,这里是文档。
推荐阅读
- c++ - 如何从 C++ 中的整数除法返回双精度数?
- javascript - 无论如何,我可以在一个 docker 容器中构建网络并将其部署在另一个 docker 容器中?
- java - 无法将 H2 DB 与 Hibernate 连接
- kotlin - 构建iOS框架时使用build.gradle.kts将文件添加到.framework
- sql - 使用来自多个表的值填充单个列
- react-native - 使用 redux 操作调度不起作用
- regex - 将正则表达式转换为 POSIX BRE
- php - 最近在插件中创建的 PHP 文件未运行 WordPress PHP 函数
- google-sheets - 显示每个人之间的可用时间的工作表
- c++ - 你可以为堆上已经存在的数组分配内存吗