在我的Azure API管理中,我为整个API定义了CORS策略。 OPTIONS命令的一切都很好用,每个成功的请求都会返回allowed-origin,还有500个响应。
由于某些奇怪的原因,当API返回401或403时,不会发回带有响应的allowed-origin标头。我从这里的前端团队了解到,这会导致麻烦,因为浏览器和/或角度无法处理XHR响应,因为它不知道是否允许...
有谁知道为什么API管理会像这样,以及我如何防止这种情况?
非常感谢!
彼得
答案 0 :(得分:1)
我对spec的阅读是,如果预检请求返回2XX响应以外的任何内容,则预检请求将失败并显示"网络错误"。没有迹象表明响应中应包含其他与CORS相关的标题。
考虑有人对不存在的资源进行预检请求并且响应是404的情况。期望服务器为不存在的资源返回CORS头部似乎是不合理的。
可能值得与Angular团队核实,了解他们为什么要检查带有非2XX响应的原始标头。或者,如果您可以在规范中找到我应该返回标题的位置,我很乐意将该信息传达给团队。