Flutter Web:如何获取 XMLHttpRequest 错误详细信息?

问题描述 投票:0回答:2

我正在开发 Flutter Web 应用程序,但在正确处理低级错误时遇到问题。

该应用程序使用 graphql-flutter,似乎任何错误都包含在库中

OperationException

enter image description here

如果仔细观察,异常包含一个

LinkException
,它本身包含一个
originalException
,那就是一个
XMLHttpRequest error
。 这里没有提供更多信息。

从浏览器开发工具上看,你可以看到这是一个

ERR_CONNECTION_REFUSED
,因为我故意配置了一个不正确的URL来触发这个错误。

enter image description here

理想情况下,我应该能够以不同的方式区分和处理连接异常、http 错误、graphql 错误。

在某种程度上,我至少能够通过检查异常来处理一些用于身份验证目的的http状态代码

bool isGraphqlResultUnauthorized(QueryResult result) {
  if (result.hasException) {
    if (result.exception?.linkException is HttpLinkParserException) {
      final httpException =
          result.exception?.linkException as HttpLinkParserException;
      if (httpException.response.statusCode == 401) {
        return true;
      }
    }
  }
  return false;
}

综上所述,我一直在捕获低级错误,如超时、未知主机、连接拒绝等,并且未能找到一种方法来检索有关异常真正原因的更有意义的信息。

我将不胜感激有关如何检索此信息的任何提示,因为我目前似乎没有找到方法。

谢谢大家

flutter dart error-handling flutter-graphql graphql-flutter
2个回答
0
投票

可悲的是,XHR 的设置仅仅是为了为浏览器提供“动态刷新”的有限方式。 我很惊讶我们已经重新利用它来创建完整的网络应用程序,但我们仍然超出了原始规范。

这并不是一个真正的答案。 解决 Flutter Web 应用本身充当客户端(如 CORS)时遇到的许多问题需要改变我们赋予浏览器的权力,但这也会导致不良行为者遭受更多攻击。


0
投票

这是一个 CORS 问题。 看看这个

对于本地开发,您可以禁用安全性(请注意,这不是推荐的生产解决方案):

flutter run --web-browser-flag "--disable-web-security"
© www.soinside.com 2019 - 2024. All rights reserved.