Ajax“获取”到内部服务>>离线时CMS服务人员回答确定

时间:2020-06-25 15:58:36

标签: javascript ajax flask request service-worker

下午好,

我们正在使用开源CMS。我们升级的最新版本具有新功能,该功能是javascript serviceworker的实现,可以处理所有提出的请求。

此CMS具有一些工作流程表单,用户可以在其中进行交互(由我们设计)。在设计时,您可以在其上添加一些自定义html作为特殊的代码段元素,其中可以包含所需的所有JS,HTML和CSS代码。

我们创建了一个按钮,单击该按钮,即可在同一计算机实例(https:// localhost:5000 /)上在线/处于活动状态的Python Flask服务器上获得$ .get()。

在升级之前使用先前的CMS版本(其中没有serviceworker),如果我们停止了Flask服务器,则在按钮上单击$ .get(),我们将收到预期的错误(404/500),因此我们可以进行处理jQuery部分带有“ .fail()”。但是,如果Flask处于活动状态,我们将在“ .done()”部分进行处理。

现在,一切都发生在“ .done()”上,因为即使它应该失败(因为Flask处于脱机状态),服务工作人员也会“中途捕获”它并按OK(200)解决:

enter image description here enter image description here

实际上服务器关闭时:

enter image description here

那么,知道我们无法以任何方式更改服务工作人员代码时,如何避免服务工作人员捕获ajax调用? 我们能否以某种方式扩展它,以便在“获取”侦听器上添加针对“ / api” URL的验证,使其仅是“返回;”?

这是Chrome所说的重点:

enter image description here

和一段功能代码:

{{1}}

});

非常感谢和问候。

1 个答案:

答案 0 :(得分:0)

好吧,没有答案。好吧。

因此,如果有人感兴趣,请向我解释如何解决。 基本上是“牛仔竞技表演”:

  • 无法更改serviceworker的功能(因为它是第三方软件,我无法编辑)。
  • 因此唯一的方法是每次“避免缓存”,在每个ajax调用中都使用“ cache:false”。
  • 通过这种方式,SW无法提供页面的“脱机”版本,即使在线,我也不会每次都收到真实页面(已缓存,但真实)。
  • 因此,当回想起.done()和.fail()时,一切都转到了“ done()”(因为一切正常,所以200正常),但是我像过去那样检查那里的响应内容...这样,如果服务器处于联机状态,它将以正确的预期响应解析实际的200 OK。但是,如果它是脱机的,则即使使用SW OK 200,当我使用“ cache:false”参数时,响应也不是真正的期望响应文本。因此条件失败,我可以将其视为真实的404。

简单,仅此而已。