【发布时间】:2021-03-28 03:10:34
【问题描述】:
在我的 JS 单页 Web 应用程序中,我有一个触发“onclick”的重置按钮,并将使用 vanilla fetch() 将一个空的 JSON 数组放入我的 API。两者都托管在同一个域/服务器上。使用 Firefox(当前为 86.0)时,我第一次按下重置按钮时,呼叫被中止。控制台显示NetworkError when attempting to fetch resource 白色网络选项卡显示NS_BINDING_ABORTED 在已传输的列中。
当我重新加载我的应用程序 (F5) 并再次按下相同的按钮时,它可以工作。而且从现在开始的任何时间。由于执行相同的代码,失败的调用和工作调用将发送相同的标头和有效负载。
Chrome 没有显示这种行为,第一次调用也可以。
更奇怪的是,Firefox 中第一次失败的 PUT 调用似乎每个 URL 只失败一次。 Web 应用通过前端 URL 中的区域 ID 向用户提供“区域”,例如
https://example.org/areas/#/myAreaA
和
https://example.org/areas/#/myAreaB
这些将 PUT 到 API,其 URL 中也有这些 ID:
https://example.org/api/areas/myAreaA/state/
和
https://example.org/api/areas/myAreaB/state/
对于这些 URL 中的每一个,第一个 PUT 调用失败并显示 NS_BINDING_ABORTED,但之后可以正常工作。如果我将此类区域的 URL 复制到新选项卡中,甚至再次关闭并打开浏览器,则错误不会再次出现。该网络应用不使用任何 cookie。
网络应用对同一个后端/areaID 执行了许多其他 API 调用,没有其他显示此行为。但是,这是唯一的 PUT 调用,所有其他调用都是 GET/POST/HEAD/PATCH 请求。
第一次 PUT 失败的原因是什么?
【问题讨论】:
-
旁注:这也发生在没有任何(拦截器)插件处于活动状态的全新 Firefox 配置文件中。
标签: javascript rest firefox