CORS 错误
跨域资源共享 (CORS) 是一种允许服务器放宽同源策略的标准。它用于明确允许某些跨域请求,同时拒绝其他请求。例如,如果一个网站提供可嵌入服务,则可能需要放宽某些限制。设置这样的 CORS 配置不一定容易,并且可能会带来一些挑战。在这些页面中,我们将探讨一些常见的 CORS 错误消息以及如何解决它们。
如果 CORS 配置未正确设置,浏览器控制台将显示类似 "Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at [some site]"
的错误,表明请求因违反 CORS 安全规则而被阻止。但这不一定是设置错误。请求实际上可能被用户的 Web 应用程序和远程外部服务有意地禁止。但是,如果终结点应该可用,则需要进行一些调试才能成功。
识别 CORS 问题
要了解 CORS 配置的根本问题,您需要找出哪个请求有问题以及原因。这些步骤可能会帮助您做到这一点:
错误消息的文本将类似于以下内容:
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://some-url-here. (Reason: additional information here).
注意:出于安全原因,有关 CORS 请求出了什么具体问题的信息不适用于 JavaScript 代码。代码只知道发生了错误。确定具体出了什么问题的唯一方法是查看浏览器控制台以获取详细信息。
CORS 错误消息
当请求因 CORS 失败时,Firefox 的控制台会在其控制台中显示消息。错误文本的一部分是“原因”消息,它提供了对出了什么问题的额外见解。原因消息如下所示;单击消息以打开一篇文章,该文章更详细地解释了错误并提供了可能的解决方案。
- 原因:CORS 已禁用
- 原因:CORS 请求未成功
- 原因:无法添加 CORS 标头 'Origin'
- 原因:不允许 CORS 请求外部重定向
- 原因:CORS 请求不是 http
- 原因:缺少 CORS 标头 'Access-Control-Allow-Origin'
- 原因:CORS 标头 'Access-Control-Allow-Origin' 与 'xyz' 不匹配
- 原因:如果 CORS 标头 'Access-Control-Allow-Origin' 是 '*',则不支持凭据
- 原因:在 CORS 标头 'Access-Control-Allow-Methods' 中未找到方法
- 原因:在 CORS 标头 'Access-Control-Allow-Credentials' 中应为 'true'
- 原因:CORS 预检通道未成功
- 原因:CORS 标头 'Access-Control-Allow-Methods' 中的无效令牌 'xyz'
- 原因:CORS 标头 'Access-Control-Allow-Headers' 中的无效令牌 'xyz'
- 原因:CORS 预检通道的 CORS 标头 'Access-Control-Allow-Headers' 中缺少令牌 'xyz'
- 原因:不允许存在多个 CORS 标头 'Access-Control-Allow-Origin'