Azure API 管理不会在 4xx 上发送 CORS 标头
Posted
技术标签:
【中文标题】Azure API 管理不会在 4xx 上发送 CORS 标头【英文标题】:Azure API Management doesn't send CORS header on 4xx 【发布时间】:2016-06-09 09:11:41 【问题描述】:在我的 Azure API 管理中,我为整个 API 定义了 CORS 策略。使用 OPTIONS 命令一切正常,每次成功请求和 500 个响应都会返回 allowed-origin。
由于某种奇怪的原因,当 API 返回 401 或 403 时,allowed-origin 标头不会随响应一起发回。我从这里的前端团队了解到,这会导致麻烦,因为浏览器和/或 Angular 无法处理 XHR 响应,因为它不知道是否允许...
有谁知道为什么 API 管理会有这样的行为以及如何防止这种情况发生?
非常感谢!
彼得
【问题讨论】:
【参考方案1】:我对@987654321@ 的解读是,如果预检请求返回的不是 2XX 响应,则预检请求会失败并出现“网络错误”。没有迹象表明其他与 CORS 相关的标头应包含在响应中。
考虑以下情况:有人对不存在的资源发出预检请求,响应为 404。期望服务器为不存在的资源返回 CORS 标头似乎是不合理的。
可能值得与 Angular 团队核实一下,以了解他们为什么要检查具有非 2XX 响应的原始标头。或者,如果您能在规范中找到我应该返回哪些标头的地方,我会很乐意将这些信息传达给团队。
【讨论】:
我遇到了同样的问题,请务必在操作下添加“OPTIONS”。这是 CORS 预检所需要的以上是关于Azure API 管理不会在 4xx 上发送 CORS 标头的主要内容,如果未能解决你的问题,请参考以下文章
是否可以使用 Azure 资源管理器 API 向队列或主题发送和检索消息
在 Azure Service Fabric (API) 中从一个微服务向另一个微服务发送消息