You need to enable JavaScript to run this app.
导航
HTTP 响应头设置
最近更新时间:2024.12.11 10:47:59首次发布时间:2024.12.11 10:47:59

本文档介绍如何在CDN加速服务中配置 HTTP 响应头。

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

前提条件

您已经添加域名到CDN加速服务。相关操作,请参见添加域名

操作步骤

  1. 登录多云CDN控制台

  2. 在左侧导航栏,单击 CDN加速
  3. 在CDN加速域名列表找到您的域名,单击域名名称。
  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 头部的值。

  • 禁用:表示CDN加速服务不会校验 Origin 头部,由客户端浏览器判断跨域请求是否成功。CDN加速服务在响应中会包含 Access-Control-Allow-Origin 头部,头部值就是您在 头部取值 中输入的值。

说明

  • 如果您设置 Access-Control-Allow-Origin 的值为 *,无论 跨域校验 是否启用,CDN加速服务在响应中始终设置 Access-Control-Allow-Origin: *

  • 如果您设置 Access-Control-Allow-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