Access-Control-Allow-Origin 头

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2015 年 7 月⁩以来,各浏览器均已提供此特性。

HTTP Access-Control-Allow-Origin 响应头指示响应是否可以与来自给定的请求代码共享。

头类型 响应头
禁止请求头

语法

http
Access-Control-Allow-Origin: *
Access-Control-Allow-Origin: <origin>
Access-Control-Allow-Origin: null

指令

* (通配符)

允许来自任何源的请求代码访问资源。对于不带凭据的请求,可以将文字值*指定为通配符。尝试将通配符与凭据一起使用会导致错误

<源>

指定单个源。如果服务器支持来自多个源的客户端,它必须返回发起请求的特定客户端的源。

null

指定源“null”。

注意:不应使用值null。返回Access-Control-Allow-Origin: "null"可能看起来很安全;然而,使用非分层方案(例如data:file:)的资源的源以及沙盒文档的源会序列化为null。许多浏览器将授予此类文档访问带有Access-Control-Allow-Origin: null头的响应的权限,并且任何源都可以创建一个带有null源的恶意文档。因此,应避免对Access-Control-Allow-Origin头使用null值。

示例

指示浏览器允许来自任何源的代码访问资源的响应将包含以下内容

http
Access-Control-Allow-Origin: *

指示浏览器允许来自源https://mdn.org.cn的请求代码访问资源的响应将包含以下内容

http
Access-Control-Allow-Origin: https://mdn.org.cn

将可能的Access-Control-Allow-Origin值限制为一组允许的源需要在服务器端编写代码,以检查Origin请求头的值,将其与允许的源列表进行比较,然后如果Origin值在列表中,则将Access-Control-Allow-Origin值设置为与Origin值相同的值。

CORS 和缓存

假设服务器发送的响应中的Access-Control-Allow-Origin值是明确的源(而不是*通配符)。在这种情况下,响应还应包含一个带有值OriginVary响应头,以指示浏览器服务器响应可能因Origin请求头的值而异。

http
Access-Control-Allow-Origin: https://mdn.org.cn
Vary: Origin

规范

规范
Fetch
# http-access-control-allow-origin

浏览器兼容性

另见