HTTP 状态代码 410 与其他代码之间的行为差​​异 w.r.t Angular 5

Difference in behaviour between HTTP Status code 410 and other codes w.r.t Angular 5

后端:Java

前端:Angular 5

考虑一下:

前端向后端发出 HTTP 请求。

后端 returns HTTP 状态代码作为对前端请求的响应。

为了进行错误处理测试,我手动更改了从后端返回的 HTTP 代码。

场景 1:

在将要返回的代码设置为 FORBIDDEN (407) 时,前端正确显示了 407 错误。现在,将代码设置回 OK (200),前端也正确反映了这一点。

场景 2:

在将要返回的代码设置为 GONE (410) 时,前端正确显示了 410 错误。然而,在将代码设置回 OK (200) 时,前端 没有 正确反映更改,而是继续显示错误 410。

事实上,即使在停止服务器后,前端 也没有 显示 net::ERR_CONNECTION_REFUSED 错误,而是继续显示 410。

有什么解释吗?

使用HTTP response status 410时要小心,因为它将被缓存在浏览器中以指示目标资源不再可从原始服务器获得并且将不再可用。(这由服务器端决定)。请参阅 details

因为服务器端会在响应 410 时确定过期时间,所以浏览器会简单地缓存它,下次您尝试请求相同的资源时,浏览器不会触发请求,直到它已经过期了。这有助于防止无用的请求。