【问题标题】:NS_BINDING_ABORTED only on first PUT attempt in FirefoxNS_BINDING_ABORTED 仅在 Firefox 中第一次 PUT 尝试时
【发布时间】: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


【解决方案1】:

"NetworkError when attempting to fetch resource." only on Firefox 之后,我发现了问题。似乎 Firefox 的 onclick 事件传播在这里干扰了 fetch() 调用。我刚加了

event.preventDefault()

在 onclick-handler 执行实际的 fetch() 之前,一切又开始工作了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-11
    • 2015-02-11
    • 1970-01-01
    • 1970-01-01
    • 2017-10-24
    • 1970-01-01
    相关资源
    最近更新 更多