Access-Control-Allow-Origin
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Access-Control-Allow-Origin
响应标头指定了该响应的资源是否被允许与给定的来源(origin)共享。
语法
Access-Control-Allow-Origin: *
Access-Control-Allow-Origin: <origin>
Access-Control-Allow-Origin: null
指令
*
-
对于不包含凭据的请求,服务器会以“
*
”作为通配符,从而允许任意来源的请求代码都具有访问资源的权限。尝试使用通配符来响应包含凭据的请求会导致错误。 <origin>
-
指定一个来源(只能指定一个)。如果服务器支持多个来源的客户端,其必须以与指定客户端匹配的来源来响应请求。
null
-
指定来源为“null”。
备注:
null
不应该被使用:“返回Access-Control-Allow-Origin: "null"
似乎是安全的,但任何使用非分级协议(如data:
或file:
)的资源和沙盒文件的 Origin 的序列化都被定义为‘null’。许多用户代理将授予这类文件对带有Access-Control-Allow-Origin: "null"
头的响应的访问权,而且任何源都可以用null
源创建一个恶意文件。因此,应该避免将 ACAO 标头设置为‘null’值。”
示例
一个告诉浏览器允许任何来源的代码访问资源的响应将包括以下内容:
Access-Control-Allow-Origin: *
如需允许 https://developer.mozilla.org
源访问资源,响应应包含以下内容:
Access-Control-Allow-Origin: https://developer.mozilla.org
将可能的 Access-Control-Allow-Origin
值限制在一组允许的源,需要服务器端的代码检查 Origin
请求标头的值,将其与允许的来源列表进行比较,如果 Origin
值在列表中,将 Access-Control-Allow-Origin
设置为与 Origin
标头相同的值。
CORS 和缓存
如果服务器未使用通配符“*
”,而是指定了明确的来源,那么为了向客户端表明服务器的返回会根据 Origin
请求标头而有所不同,必须在 Vary
响应标头中包含 Origin
。
Access-Control-Allow-Origin: https://developer.mozilla.org
Vary: Origin
规范
Specification |
---|
Fetch Standard # http-access-control-allow-origin |
浏览器兼容性
BCD tables only load in the browser