代码之家  ›  专栏  ›  技术社区  ›  Qwerty

如何获取CORS http失败飞行前请求的状态代码

  •  3
  • Qwerty  · 技术社区  · 8 年前

    是否可以获取失败的飞行前请求的错误代码,以便打印有意义的错误消息? (或者是否有一种习惯,无论代码如何,都会为所有失败的飞行前请求打印静态错误?)

    很明显,状态代码 401 打印到控制台,但错误处理程序或 .catch() 语句仅接收抛出的错误对象。 with preflight

    如果我删除触发预飞行的标题,我就可以自己处理响应,并且可以提取状态代码。 without preflight

    //还要注意,第一个屏幕截图中返回的代码401是错误的。但那是 another question

    2 回复  |  直到 8 年前
        1
  •  3
  •   Quentin    8 年前

    不,不是。

    如果飞行前响应的状态代码不是200,则同源策略将阻止从中提取有关响应的任何信息。

    由于这个原因,我刚刚完成了一个web API的设置,它总是为选项请求返回200个OK状态。

        2
  •  1
  •   Grilse    8 年前

    不幸的是,没有。全部的 fetch 退货是一种 TypeError 显示消息“无法获取”。

    > fetch('https://stackexchange.com/404').then(x => console.info(x), error => console.error(error))
    × TypeError: Failed to fetch
    

    我试图手动发送另一个飞行前请求,并获取该请求的响应代码。

    > fetch('https://stackexchange.com/404', { method: 'OPTIONS' }).then(x => console.info(x), error => console.error(error))
    × TypeError: Failed to fetch
    

    但这只会触发另一个预飞行,仍然不允许我处理实际失败的请求。