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).
备注: 出于安全原因,JavaScript 代码无法给出有关 CORS 请求出错的详细信息。所有代码都知道发生了错误。确定具体问题的唯一方法是查看浏览器的控制台以获取详细信息。
CORS 错误信息
当请求因 CORS 失败时,Firefox 的控制台会在其控制台中显示消息。错误文本的一部分是“原因”消息,它提供了对出错的更深入的了解。下面列出了原因的消息;点击消息以打开一篇文章,更详细地阐述了错误以及提供可能的解决方案。
- 原因:CORS disabled
- 原因:CORS request did not succeed
- 原因:CORS header 'Origin' cannot be added
- 原因:CORS request external redirect not allowed
- 原因:CORS request not http
- 原因:CORS header 'Access-Control-Allow-Origin' missing
- 原因:CORS header 'Access-Control-Allow-Origin' does not match 'xyz'
- 原因:Credential is not supported if the CORS header 'Access-Control-Allow-Origin' is '*'
- 原因:Did not find method in CORS header 'Access-Control-Allow-Methods'
- 原因:expected 'true' in CORS header 'Access-Control-Allow-Credentials'
- 原因:CORS preflight channel did not succeed
- 原因:invalid token 'xyz' in CORS header 'Access-Control-Allow-Methods'
- 原因:invalid token 'xyz' in CORS header 'Access-Control-Allow-Headers'
- 原因:missing token 'xyz' in CORS header 'Access-Control-Allow-Headers' from CORS preflight channel
- 原因:Multiple CORS header 'Access-Control-Allow-Origin' not allowed
参见
- 术语:CORS
- CORS 介绍
- 服务端 CORS 设置
- 允许图片跨源请求
- CORS 设置属性
- https://www.test-cors.org——用于测试 CORS 请求的页面