此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。
原因:CORS header 'Access-Control-Allow-Origin' missing
原因
原因:CORS header 'Access-Control-Allow-Origin' missing
In this article
哪里出错了?
对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;