【问题标题】:Flutter Web getting 'XMLHttpRequest' error while making http callFlutter Web 在进行 http 调用时出现“XMLHttpRequest”错误
【发布时间】:2020-08-27 16:07:47
【问题描述】:

我正在尝试查询在我的本地服务器上运行的 Apache Drill,但我收到以下错误。请帮助我,我也尝试在项目的 /web 文件夹中添加“.htaccess”,但它没有工作....谢谢!

http
    .post(
  'http://localhost:8047/query.json',
  headers: <String, String>{
    'Content-Type': 'application/json',
    'Access-Control-Allow-Headers':
        'Origin, Content-Type, Cookie, X-CSRF-TOKEN, Accept, Authorization, X-XSRF-TOKEN, Access-Control-Allow-Origin',
    'Access-Control-Expose-Headers': "" 'Authorization, authenticated',
    'Access-Control-Allow-Origin': '*',
    'Access-Control-Allow-Methods': 'GET,POST,OPTIONS,DELETE,PUT',
    'Access-Control-Allow-Credentials': 'true',
  },
  body: jsonEncode(<String, String>{
    'queryType': 'SQL',
    'query':
        'select * from dfs.`C:/Users/drill/data/*.parquet`'
  }),
)
    .then((_response) {
  setState(() {
     response = jsonDecode(_response.body);
  });
}

Error: XMLHttpRequest error.
    C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 264:20      get current
packages/http/src/browser_client.dart 84:22                                                                                    <fn>
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/zone.dart 1450:54                                              runUnary
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/future_impl.dart 143:18                                        handleValue
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/future_impl.dart 696:44                                        handleValueCallback
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/future_impl.dart 725:32                                        _propagateToListeners
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/future_impl.dart 519:7                                         [_complete]
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/stream_pipe.dart 61:11                                         _cancelAndValue
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/stream.dart 1300:7                                             <fn>
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 324:14  _checkAndCall
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 329:39  dcall
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/html/dart2js/html_dart2js.dart 37287:58                              <fn>
    at Object.createErrorWithStack (http://localhost:62659/dart_sdk.js:4348:12)
    at Object._rethrow (http://localhost:62659/dart_sdk.js:37892:16)
    at async._AsyncCallbackEntry.new.callback (http://localhost:62659/dart_sdk.js:37886:13)
    at Object._microtaskLoop (http://localhost:62659/dart_sdk.js:37718:13)
    at _startMicrotaskLoop (http://localhost:62659/dart_sdk.js:37724:13)

【问题讨论】:

  • 您需要共享您的服务器端代码。这不是颤振的问题。
  • 嗨,克里斯....我还没有编写服务端代码,正如我上面提到的,我正在向 Apache Drill 发送一个发布请求,并且我没有更改配置中的任何内容。这也是我第一次研究它。
  • 这几乎可以肯定是服务器端错误,所以如果您不提供更多信息,将很难提供帮助。从颤振中获取更详细的错误也可能会有所帮助。
  • 嗨,克里斯,我怀疑这是服务器端错误,我尝试在服务器停止的情况下运行应用程序以查看行为/错误,但在服务器未运行的情况下我仍然收到相同的错误。我已在此处粘贴详细日志:pastebin.com/ubcwKWLP
  • 在没有服务器运行的情况下运行它并不能证明什么。没有响应的服务器仍然是一个错误。

标签: flutter-web


【解决方案1】:

我目前有同样的错误信息,而且非常具有误导性。它似乎只是表明请求因任何原因而失败。

要调试它,请使用 Chrome 的 DevTools (Ctrl+Shift+C),转到“网络”并在那里检查。您几乎肯定会看到请求的某些部分不是您想要的,并且请求失败了。

编辑:也许这是一个 CORS 问题,那么这个很好的答案可能会有所帮助:No 'Access-Control-Allow-Origin' header is present on the requested resource—when trying to get data from a REST API

【讨论】:

  • 嗨 Searles,这是 CORS 问题,我使用 python 脚本作为休息 API 与钻机通信并取回数据,它对我有用。这不是最好的解决方案,但在本地机器上测试时它对我有用
【解决方案2】:

这可能只是您正在运行的设备的问题。

在任务管理器中确保退出所有 chrome 进程

然后

flutter clean

然后

flutter run -d chrome

这解决了我的问题。

【讨论】:

    猜你喜欢
    • 2021-02-04
    • 2021-08-06
    • 2022-01-07
    • 2021-07-19
    • 1970-01-01
    • 2020-10-15
    • 2021-04-12
    • 1970-01-01
    • 2021-03-25
    相关资源
    最近更新 更多