firefox - Firefox 84/85 中的“尝试获取资源时出现网络错误”
问题描述
不久前,我们推出了一个由 GQL 后端支持的 React 网站。就在最近从收集的客户端指标中,我们观察到在 84 和 85 版本的 Firefox 浏览器中获取数据期间,以下错误发生率很高(截至发布此问题的最新时间)。
NetworkError when attempting to fetch resource.
在 React 应用程序内部,使用 Apollo GraphQL 客户端来获取数据。整个 ApolloError 对象读起来像
{"graphQLErrors":[],"networkError":{},"message":"NetworkError when attempting to fetch resource."}
然而,当我们自己尝试上述浏览器版本时,这无法重现。
我已经确认这不应该是 CORS 问题。我们有相当大的用户群,他们使用的 Firefox 浏览器版本范围很广,但只有 84 和 85 版本的出现率异常高。不久前,我们修复了一个类似的问题,该问题是由于旧版本浏览器与 Fetch api 不兼容而导致的。
对于可能导致该问题的原因,我们有点无能为力。客户端的日志记录量受到限制以显示更多。任何见解或线索都受到高度赞赏。
解决方案
最终我发现这不是与 Firefox 84/85 相关的错误。正如这里所解释的,当浏览器中止其进程时(很可能是由于用户导航到不同的页面或停止页面加载引起的),fetch API 只会抛出网络错误消息。
我已经在一些主要浏览器上验证了这一点,方法是在 fetch API 正在进行时故意停止页面加载。我收到的错误消息是:
- 铬和边缘 -
Failed to fetch
- 火狐——
NetworkError when attempting to fetch resource
- 苹果浏览器 -
cancelled
不幸的是,只有 Safari 浏览器会返回正确的消息来解释可能发生的情况。
我认为通常可以安全地忽略这些错误,或者通过一次重试尝试来挽救它们,以防它们是由连接问题引起的。在 Apollo GraphQL 客户端的情况下,检查对象的graphQLErrors
和networkError
属性更为重要ApolloError
,这表明客户端发现了一些严重的问题。
推荐阅读
- php - 根据天数更改主页或结果
- java - 在 JPanel 中对 JButton 进行排序
- html - 我如何在 cdk-overlay-pane 旁边为 Angular 7 中的材质菜单应用自定义类
- php - 如何将内容添加到网页
- pyspark - 什么是 Apache Spark (SQL) 中的催化剂优化器?
- javascript - 如何避免 thunk 中对象的突变
- javascript - 从 Web 解析 XML 并在 google map api 上添加多个标记
- spring - Spring批处理不释放内存(内存不足问题)
- python - 如何集成和使用复杂结构的 GIT 存储库同步并存储在 PYTHONPATH 的文件夹中
- javascript - 正则表达式数字格式