CORS 错误
跨域资源共享 (CORS) 是一种标准,允许服务器放宽 同源策略。这用于明确允许某些跨域请求,同时拒绝其他请求。例如,如果某个网站提供可嵌入服务,则可能需要放宽某些限制。设置此类 CORS 配置并不一定容易,可能会遇到一些挑战。在本页中,我们将探讨一些常见的 CORS 错误消息以及如何解决它们。
如果 CORS 配置设置不正确,浏览器控制台将显示类似于 "Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at $somesite"
的错误,表明请求由于违反 CORS 安全规则而被阻止。但这并不一定意味着设置错误。请求也可能实际上被用户的 Web 应用程序和远程外部服务故意拒绝。但是,如果端点应该可用,则需要进行一些调试以使其成功。
识别问题
要了解 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'