You need to enable JavaScript to run this app.
导航
HTTP 响应头设置
最近更新时间:2024.11.28 21:32:32首次发布时间:2022.02.09 10:17:15

本文档介绍如何在火山引擎内容分发网络(CDN)中配置 HTTP 响应头。

默认情况下,在对用户请求的响应中,CDN 会包含源站响应中的所有头部。您可以配置 CDN 在用户请求的响应中所包含的头部。

操作步骤

  1. 登录 火山引擎内容分发网络控制台
  2. 在左侧导航栏,点击 域名管理
  3. 域名管理 页面,找到需要配置的域名,点击 管理
  4. 在域名页面上,点击 缓存配置 页签。
  5. 在页面右上方,点击 编辑配置
  6. HTTP 响应头设置 下方,点击 新增规则。您最多可以添加 50 条规则。
  7. 参照文档下方的 配置说明 对该规则进行配置。
  8. 配置完成后,在页面右上方,点击 提交编辑

alt

配置说明

配置说明

配置类型

表示一个操作类型。该配置有以下选项:

  • 设置:表示设置一个头部。设置操作包括添加与修改。如果源站响应中已包含该头部,该头部的值会被覆盖。如果源站响应中没有包含该头部,该头部会被添加。
  • 删除:表示删除一个头部。

头部名称

表示需要设置或者删除的一个头部。头部名称是大小写不敏感的。您可以从下拉列表中选择一个常用头部,参见 常用头部。除了 注意事项 中列出的那些头部名称之外,您可以输入任意一个头部名称。头部名称不能超过 1,024 个字符,不能包含以下字符:

  • 汉字、下划线(_)、空格、双引号(")、冒号(:)

取值方式

对于您在 头部名称 中指定头部,该配置表示该头部值的类型,有以下选项:

  • 常量:表示该头部值是一个字符串。
  • 变量:表示该头部值来自一个变量。
  • 自定义:表示该头部值是变量与字符串拼接后的一个字符串。

头部取值

表示您在 头部名称 中指定头部的取值。

  • 如果 取值方式常量,您需要输入一个字符串。该字符串的长度不能超过 1,024 个字符,不能包含以下字符:

    • 汉字、下划线(_)、空格、双引号(")、冒号(:)
  • 如果 取值方式变量,您需要从列表中选择一个变量。参见 变量列表

  • 如果 取值方式自定义,您需要输入由变量和字符串拼接后的一个字符串。变量需要包裹在 {} 中,由 $ 开头。例如 bind${remote_addr}to${host}done

如果 头部名称Access-Control-Allow-Origin,您可以在 头部取值 中输入多个以逗号(,)分隔的来源 IP 和来源域名,表示允许访问您域名的来源 IP 和来源域名。域名可以是泛域名。

跨域校验

表示是否需要 CDN 校验用户请求头中的 Origin 头部。该配置仅在以下情况下会出现:

  • 头部名称Access-Control-Allow-Origin,并且 取值方式常量

该配置的设置说明如下:

  • 启用:表示 CDN 会校验 Origin 头部。

    • 如果 Origin 头部中的域名或者 IP 不在您指定的 Access-Control-Allow-Origin 列表中,则校验失败。CDN 在响应中不会包含 Access-Control-Allow-Origin 头部。用户请求会失败。

    • 如果 Origin 头部中的域名或者 IP 在您指定的 Access-Control-Allow-Origin 列表中,则校验成功。CDN 在响应中会包含 Access-Control-Allow-Origin 头部,头部值就是 Origin 头部的值。

    • 如果您设置的 Access-Control-Allow-Origin 值中包含泛域名,CDN 也会检查请求中的 Origin 头部值是否匹配这个泛域名。如果 Origin 头部值不匹配该泛域名,也不匹配 Access-Control-Allow-Origin 值中的其他域名,则校验失败。

  • 禁用:表示 CDN 不会校验 Origin 头部,由客户端浏览器判断跨域请求是否成功。CDN 在响应中会包含 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 的值为 helloworld

头部名称说明示例

Access-Control-Allow-Origin

指定允许访问您站点资源的来源(Origin)。

  • 多个来源使用逗号(,)分隔。

  • 您可以指定 *,表示任意来源。

  • 来源中的 host 可以是 IP 地址,也可以是域名。域名可以是泛域名。

  • 来源可以包含端口。

  • 如果来源不是 *,必须以 http:// 或者 https:// 开头。

示例一
*

示例二
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-ControlContent-LanguageContent-TypeExpiresLast-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