原因:缺少 CORS 标头 'Access-Control-Allow-Origin'

原因

Reason: CORS header 'Access-Control-Allow-Origin' missing

哪里出错了?

CORS 请求的响应缺少必需的 Access-Control-Allow-Origin 标头,此标头用于确定当前源中运行的内容是否可以访问该资源。

如果服务器在您的控制之下,请通过将其添加到 Access-Control-Allow-Origin 标头的值中,将请求站点的源添加到允许访问的域集中。

例如,要允许 https://example.com 上的站点使用 CORS 访问资源,标头应为

http
Access-Control-Allow-Origin: https://example.com

您还可以通过使用 * 通配符将站点配置为允许任何站点访问。您只应将其用于公共 API。私有 API 绝不应使用 *,而应设置特定的域或域列表。此外,通配符仅适用于将 crossorigin 属性设置为 anonymous 的请求,并且它会阻止在请求中发送凭据(如 Cookie)。

http
Access-Control-Allow-Origin: *

警告:使用通配符允许所有站点访问私有 API 是一个坏主意。

要允许任何站点进行 CORS 请求而不使用 * 通配符(例如,为了启用凭据),您的服务器必须读取请求的 Origin 标头的值,并使用该值设置 Access-Control-Allow-Origin,并且还必须设置一个 Vary: Origin 标头,以指示某些标头是根据源动态设置的。

常见 Web 服务器的示例

设置标头的确切指令取决于您的 Web 服务器。

在以下示例中,

Apache文档)中,在服务器配置中(在适当的 <Directory><Location><Files><VirtualHost> 部分内)添加以下行。配置通常在 .conf 文件(httpd.confapache.conf 是这些文件的常见名称)或 .htaccess 文件中找到

apacheconf
Header set Access-Control-Allow-Origin 'https://example.com'

对于 Nginx文档),设置此标头的命令是

nginx
add_header 'Access-Control-Allow-Origin' 'https://example.com' always;

另见