如果HTTP状态为错误代码,Chrome无法下载响应正文

Gau*_*ish 5 http express google-chrome-devtools

我有一个Node.js Express Web服务器,当出现问题时,该服务器返回HTTP响应JSON有效负载以及错误状态(4xx或5xx)。

res.status(500).json({ error: 'message' });
Run Code Online (Sandbox Code Playgroud)

从Chrome浏览器开发者控制台的“计时”部分,我可以看到“内容下载”部分中花费了很多时间(最多5分钟),最终在下载失败后,“响应”部分中出现了“无法加载响应数据”。

Chrome开发者控制台计时输出

其他浏览器(如Firefox和Opera)能够成功下载JSON有效负载并将其显示在各自的开发人员控制台中。

如果我将HTTP状态发送回200,则Chrome可以轻松下载有效负载。

另外,如果我未将Cache-Control HTTP标头设置为“无存储,无缓存...”,则Chrome能够成功下载状态为4xx / 5xx的有效负载。但是,我想将此标头设置为防止缓存滥用的一种好习惯。

成功和失败案例中的HTTP响应标头

我需要为Chrome做些特定的事情吗?

谢谢!

Iva*_*ldi 3

我刚刚遇到了类似的问题。对于请求,我使用了fetchAPI,如果出现错误,我没有读取响应正文的流。

响应正文的内容未显示在开发工具中,请求也未包含在导出中HAR

在控制台中调试此内容后,我注意到只要我读取流,内容就会显示在响应或预览选项卡中。(例如await response.text():)

奇怪的是,当未设置相应的缓存标头时,行为会发生变化,正如您所描述的那样。