原因:缺少 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.conf
和 apache.conf
是这些文件的常见名称)或 .htaccess
文件中找到
apacheconf
Header set Access-Control-Allow-Origin 'https://example.com'
对于 Nginx(文档),设置此标头的命令是
nginx
add_header 'Access-Control-Allow-Origin' 'https://example.com' always;