使用 fetch 时将不同的失败分开

Separate different failures when using fetch

我正在使用 fetch 向我的应用程序后端发出请求,该应用程序使用 OAuth 身份验证提供程序。

当会话过期时,提取请求被重定向到身份验证提供程序,导致它因 CORS 错误(我无法更改)而失败。

在这种情况下,fetch 抛出 TypeError: failed to fetch。 不幸的是,当网络中断或请求因其他原因超时时,我也会收到 TypeError: failed to fetch

如何可靠地区分这些故障模式?

我没有在抛出的 TypeError 上找到任何有用的属性来区分这些失败。

可以使用 redirect: "manual" 选项捕获重定向。

fetch(url, {redirect: "manual"})

虽然出于安全目的无法捕获重定向 URL,但目前这对我来说是可以接受的解决方案。