3

在我的 Azure API 管理中,我为整个 API 定义了 CORS 策略。使用 OPTIONS 命令一切正常,每个成功的请求和 500 个响应都会返回允许的来源。

出于某种奇怪的原因,当 API 返回 401 或 403 时,allowed-origin 标头不会随响应一起发回。我从这里的前端团队了解到,这会导致麻烦,因为浏览器和/或 Angular 无法处理 XHR 响应,因为它不知道是否允许...

有谁知道为什么 API 管理会有这样的行为以及如何防止这种情况发生?

非常感谢!

彼得

4

1 回答 1

1

我对规范的解读是,如果预检请求返回的不是 2XX 响应,则预检请求会因“网络错误”而失败。没有迹象表明其他与 CORS 相关的标头应包含在响应中。

考虑有人对不存在的资源进行预检请求并且响应是 404 的情况。期望服务器为不存在的资源返回 CORS 标头似乎是不合理的。

可能值得与 Angular 团队核实一下,以了解他们为什么要检查具有非 2XX 响应的原始标头。或者,如果您可以在规范中找到我应该返回哪些标头的位置,我会很乐意将该信息传达给团队。

于 2016-02-26T17:13:11.220 回答