【问题标题】:How to get the status code of a CORS http failed preflight requets如何获取 CORS http 失败的预检请求的状态码
【发布时间】:2018-05-04 20:59:26
【问题描述】:

是否可以获取失败的预检请求的错误代码,以便我可以打印有意义的错误消息? (或者有没有习惯为所有失败的预检请求打印静态错误,无论代码如何?)

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

如果我删除触发预检的标头,我可以自己处理响应,并且可以提取状态代码。

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

【问题讨论】:

    标签: javascript cors http-status-codes preflight


    【解决方案1】:

    很遗憾没有。所有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
    

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

    【讨论】:

      【解决方案2】:

      不,不是。

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

      出于这个原因,我刚刚完成了一个 Web API 的设置,以始终为 OPTIONS 请求返回 200 OK 状态。

      【讨论】:

        猜你喜欢
        • 2020-07-18
        • 1970-01-01
        • 2021-03-29
        • 2014-10-19
        • 1970-01-01
        • 1970-01-01
        • 2019-07-22
        • 2016-02-05
        • 2018-07-31
        相关资源
        最近更新 更多