本文档介绍如何在火山引擎内容分发网络(CDN)中配置 HTTP 响应头。
默认情况下,在对用户请求的响应中,CDN 会包含源站响应中的所有头部。您可以配置 CDN 在用户请求的响应中所包含的头部。
操作步骤
- 登录 火山引擎内容分发网络控制台。
- 在左侧导航栏,点击 域名管理。
- 在 域名管理 页面,找到需要配置的域名,点击 管理。
- 定位 HTTP 响应头设置 模块。
- 如果您使用的是旧版域名管理页面,点击 编辑配置,然后在 缓存配置 标签页中定位 HTTP 响应头设置 模块。
- 如果您使用的是新版域名管理页面,点击 编辑域名。在页面左侧的树状配置项列表中,定位 功能配置 > 缓存配置 > HTTP 响应头设置。如果该模块置灰,点击模块右边的 + 。
关于新旧版域名管理页面的区别,参见 新版域名配置。
- 在 HTTP 响应头设置 模块中,点击 新增规则。您最多可以添加 50 条规则。
- 参照文档下方的 配置说明 对该规则进行配置。
- 配置完成后,点击 提交编辑。

配置说明
配置 | 说明 |
|---|
配置类型 | 表示一个操作类型。该配置有以下选项: - 设置:表示设置一个头部。设置操作包括添加与修改。如果源站响应中已包含该头部,该头部的值会被覆盖。如果源站响应中没有包含该头部,该头部会被添加。
- 删除:表示删除一个头部。
|
头部名称 | 表示需要设置或者删除的一个头部。头部名称是大小写不敏感的。您可以从下拉列表中选择一个常用头部,参见 常用头部。除了 注意事项 中列出的那些头部名称之外,您可以输入任意一个头部名称。头部名称不能超过 1,024 个字符,不能包含以下字符: - 汉字、下划线(_)、空格、双引号(")、冒号(:)
|
取值方式 | 对于您在 头部名称 中指定头部,该配置表示该头部值的类型,有以下选项: - 常量:表示该头部值是一个字符串。
- 变量:表示该头部值来自一个变量。
- 自定义:表示该头部值是变量与字符串拼接后的一个字符串。
|
头部取值 | 表示您在 头部名称 中指定头部的取值。 - 如果 取值方式 是 常量,您需要输入一个字符串。该字符串的长度不能超过 1,024 个字符,不能包含以下字符:
- 汉字、下划线(_)、空格、双引号(")、冒号(:)
- 如果 取值方式 是 变量,您需要从列表中选择一个变量。参见 变量列表。
- 如果 取值方式 是 自定义,您需要输入由变量和字符串拼接后的一个字符串。变量需要包裹在
{} 中,由 $ 开头。例如 bind${remote_addr}to${host}done。
如果 头部名称 是 Access-Control-Allow-Origin,您需要在 头部取值 中指定来源 IP 和来源域名,端口是可选的,域名可以是泛域名。多个来源 IP 和来源域名之间以逗号(,)分隔。建议您指定的来源 IP 和来源域名以 http:// 或者 https:// 开头。 |
跨域校验 | 表示是否需要 CDN 校验用户请求头中的 Origin 头部。该配置仅在以下情况下会出现: - 头部名称 是
Access-Control-Allow-Origin,并且 取值方式 是 常量。
该配置的设置说明如下: - 启用:表示 CDN 会校验 Origin 头部 。
- CDN 会将用户请求中的 Origin 头部值与
Access-Control-Allow-Origin 的配置值做精确匹配。如果两者不匹配,则校验失败。此时,CDN 在响应中不会包含 Access-Control-Allow-Origin 头部。用户请求会失败。 - 如果两者匹配,则校验成功。此时,CDN 在响应中会包含
Access-Control-Allow-Origin 头部,头部值就是用户请求中的 Origin 头部值。 - 如果
Access-Control-Allow-Origin 的配置值包含泛域名,则 CDN 会将 Origin 中的 host 与泛域名匹配,对 Origin 中的其余部分做精确匹配。
- 禁用:表示 CDN 不会校验 Origin 头部,由客户端浏览器判断跨域请求是否成功。CDN 在响应中始终会包含
Access-Control-Allow-Origin 头部,头部值就是您对 Access-Control-Allow-Origin 配置的值。
说明 - 如果您设置
Access-Control-Allow-Origin 的值为 *,无论 跨域校验 是否启用,CDN 在响应中始终设置 Access-Control-Allow-Origin: *。 - 如果您设置
Access-Control-Allow-Origin 的值为多个以逗号(,)分隔的条目,您必须设置 跨域校验 为开启。不然,客户端浏览器会提示 "Access-Control-Allow-Origin 只允许一个值" 的错误,判定跨域请求失败。 - 如果您设置的
Access-Control-Allow-Origin 值中包含泛域名,并且 跨域校验 是启用,CDN 也会检查请求中的 Origin 头部值是否匹配这个泛域名。如果 Origin 头部值不匹配该泛域名,也不匹配 Access-Control-Allow-Origin 值中的其他域名,则校验失败。
|
变量列表
CDN 提供了以下变量。
变量名称 | 说明 | 示例 |
|---|
raw_uri | 表示客户端请求 URL 中的路径。 | /dir/volcano.php
|
request_uri | 表示客户端请求 URL 中的路径和查询字符串(query string)。 | /dir/volcano.php?color=red&n=10
|
remote_addr | 表示发起本次请求的客户端的 IP 地址。 | 10.10.10.10
|
remote_port | 表示发起本次请求的客户端的端口。 | 5936
|
host | 表示客户端请求中 host 头部的值。 需要留意的是,CDN 在处理请求时可能会修改该头部的值。因此,不建议您使用该头部,而是使用 http_host。 | www.example.com:8080
|
http_host | 表示客户端请求中 host 头部的值。该头部值不会被 CDN 修改。 | |
args | 表示客户端请求 URL 中的查询字符串。 | color=red&n=10
|
msec | 表示 CDN 设置响应头的时间,格式是 Unix 时间戳,精确到毫秒。该时间戳接近首包的响应时间。 | 1704444754.917
|
scheme | 表示客户端使用的协议。 | https
|
cdn_cache_status | 表示请求是否命中缓存。 edge_hit:表示请求命中了边缘节点的缓存。parent_hit:表示请求命中了回源节点的缓存。miss:表示请求没有命中缓存。
| edge_hit
|
常用头部
CDN 提供了以下常用的头部。
说明
这些头部是标准的 HTTP 响应头。如果响应头的值是合法的,客户端浏览器会根据响应头做相应的操作。
头部名称 | 说明 | 示例 |
|---|
Access-Control-Allow-Origin | 指定允许访问您站点资源的来源(origin)。 - 多个来源使用逗号(,)分隔。
- 您可以指定
*,表示任意来源。 - 来源中的 host 可以是 IP 地址,也可以是域名。域名可以是泛域名。
- 来源可以包含端口。
- 如果您指定的来源不是
* 并且 跨域校验 为启用,则来源必须符合 URL 规范,也就是说来源必须包含 scheme 和 host。
| 示例一
* 示例二
https://www.another-site.com:448,http://10.10.10.10,https://*.example.com |
Access-Control-Allow-Methods | 指定跨域请求允许使用的 HTTP 请求方法。多个方法使用逗号(,)分隔。 | GET
|
Access-Control-Allow-Headers | 指定跨域请求允许包含的 HTTP 请求头。多个请求头使用逗号(,)分隔。 | X-Custom-Header
|
Access-Control-Expose-Headers | 指定在客户端运行的脚本所允许访问的响应头。多个响应头使用逗号(,)分隔。 默认情况下,客户端脚本允许访问的响应头有 Cache-Control、Content-Language、Content-Type、Expires、Last-Modified。如果您需要客户端脚本访问更多的响应头,可以在该头部中指定。 | Content-Encoding
|
Access-Control-Allow-Credentials | 指定跨域请求是否需要包含鉴权信息。鉴权信息包括 cookie,鉴权请求头或客户端 TLS 证书。 | true
|
Access-Control-Max-Age | 指定跨域请求时,客户端对请求内容发起的预检请求的缓存时长。单位是秒。在缓存过期前,客户端不用再次发送预检请求。 | 3600
|
Cache-Control | 对于 CDN 返回的内容,指定该内容在客户端的缓存方式。 | max-age=3600
|
Content-Disposition | 指示 CDN 返回给客户端的内容是以下载的方式提供。并指定下载的文件名。 | attachment;filename=Demo.xlsx
|
Content-Language | 指示 CDN 返回给客户端的内容语言。 | zh-CN
|
Content-Type | 指示 CDN 返回给客户端的内容类型。 | text/plain
|
Pragma | 对于 HTTP/1.0,指示 CDN 响应在客户端的缓存方式。头部值只能是 no-cache,指示客户端不要缓存 CDN 的响应。 | no-cache
|
注意事项
您设置的响应头不能是以下头部。
- access-check
- server-timing
- via
- x-request-ip
- x-tt-trace-tag
- x-bdcdn-logid
- byte-error-code
- x-bdcdn-cache-status