You need to enable JavaScript to run this app.
导航

配置 HTTP 响应头

最近更新时间2024.02.07 17:07:05

首次发布时间2022.02.09 10:17:15

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

默认情况下,边缘节点在响应用户请求时,会包含所有来自源站的响应头。在内容分发网络中,您可以对响应头进行以下操作,以实现特定的目的。

  • 设置响应头:如果您需要在响应头中添加字段,可以通过该操作进行配置。如果在匹配时发现响应头中已存在该字段,已有的字段值会被覆盖。匹配时不区分大小写。比如您添加了字段 X-Test:123,但是源站响应头中已存在字段 x-test:456。此时,缓存节点的响应头中该字段会更新为 x-test:123
  • 删除响应头:如果您不需要源站响应头中的某些字段,可以通过该操作进行配置。在边缘节点响应用户请求时,响应头中就不会包含这些字段。

在您设置字段时,可以输入任意字段或者从列表中选择一个常用字段。但是内容分发网络不支持设置某些字段,具体参见注意事项

操作步骤

  1. 登录 火山引擎内容分发网络控制台
  2. 在左侧导航栏,点击 域名管理
  3. 域名管理 页面,找到需要配置的域名,点击 管理
    页面上方的筛选条件和搜索框可以帮助您快速找到要配置的域名。
  4. 在域名页面上,点击 缓存配置 页签。
  5. 在页面右上方,点击 编辑配置
  6. HTTP 响应头设置 下方,点击 添加规则
    您最多可以添加 50 条规则。

此时,在规则列表中会出现一条待配置的规则。
alt

  1. 参照文档下方的配置说明对该规则进行配置。
  2. 如果您需要添加更多规则,点击 添加规则,然后进行相应配置。
  3. 配置完成后,在页面右上方,点击 提交编辑

配置说明

配置说明

响应头部操作

设置具体的操作。您可以设置以下值:

  • 设置:表示添加字段或者对已有字段设置特定值。
  • 删除:表示删除特定字段。

响应头部名称

设置一个需要添加或者删除的响应头字段。您可以设置任意的名称。系统也提供了常用的字段供您设置。参见常用字段。字段名称不能超过 1,024 个字符,可以包含除了以下字符的可打印 ASCII 字符:

  • 下划线(_)、空格、双引号("),Delete(ASCII code 127)

取值方式

设置响应头字段的取值方式。您可以设置以下值:

  • 常量:表示响应头字段的值是一个固定值。您需要在 响应头部取值 中设置这个值。
  • 变量:表示响应头字段的值来自一个变量字段。您需要在 响应头部取值 列表中选择一个变量字段。该变量字段的值会作为响应头字段的值。参见变量字段
  • 自定义:表示响应头字段的值是变量字段与常量字符串拼接后的字符串。在拼接字符串中,变量字段使用 ${变量名} 表示。 为了方便您输入变量字段,您可以先输入 $。此时,输入框上方会出现一个变量字段列表。在列表中,您可以选择一个或者多个变量字段,点击 确定,然后再插入常量字符串。
    示例值:${remote_addr}aaa${host}ccc

响应头部取值

设置一个需要添加或者删除的响应头字段。您可以设置任意的名称。字段名称不能超过 1,024 个字符,可以包含除了以下字符的可打印 ASCII 字符:

  • 美元符号($),Delete(ASCII code 127)

如果您对 响应头部名称 列表中的字段设置字段值,例如 Access-Control-Allow-Origin,参见常用字段了解字段值的设置要求。

跨域校验

表示在内容分发网络响应用户请求时,是否校验请求头中的 Origin 字段。您可以启用或者禁用该配置。

  • 启用:表示内容分发网络会校验 Origin 字段。如果校验成功,内容分发网络会在响应头中包含 Access-Control-Allow-Origin 字段。字段值与用户请求中的 Origin 字段值相同。如果校验失败,响应头中不会包含 Access-Control-Allow-Origin 字段。

  • 禁用:表示内容分发网络不会校验 Origin 字段。在响应头中,内容分发网络将始终包含 Access-Control-Allow-Origin 头部和您配置的值。

该配置仅在以下情况下可被配置:

  • 规则中 响应头部名称Access-Control-Allow-Origin

  • 规则中 取值方式常量

说明

  • 如果您设置 Access-Control-Allow-Origin 的值为 *。此时,无论 跨域校验 是否启用,响应头中 Access-Control-Allow-Origin 字段的值是 *

注意

  • 如果您在 Access-Control-Allow-Origin 中设置了多个值,建议您设置 跨域校验开启。不然,在用户跨域请求的响应头中,Access-Control-Allow-Origin 会包含多个值,可能会导致跨域请求失败。
操作表示可以对该规则进行的操作。比如删除该规则。

变量字段

系统提供了以下变量字段。

字段名说明示例
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 头部的值。

需要留意的是,内容分发网络在处理请求时可能会修改该字段的值。因此,不建议您使用该字段,而是使用 http_host
www.example.com:8080
http_host表示客户端请求中 host 头部的值。该字段值不会被内容分发网络修改。
args表示客户端请求 URL 中的查询字符串。color=red&n=10
msec表示内容分发网络设置响应头的时间,格式是 Unix 时间戳,精确到毫秒。该时间戳接近首包的响应时间。1704444754.917
scheme表示客户端使用的协议。https

cdn_cache_status

表示请求是否命中缓存。

  • edge_hit:表示请求命中了边缘节点的缓存。
  • parent_hit:表示请求命中了回源节点的缓存。
  • miss:表示请求没有命中缓存。

edge_hit

常用字段

您可以从列表中选择常用的字段进行设置。这些常用字段的说明如下:

说明

这些字段是标准的 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对于内容分发网络返回的内容,指定该内容在客户端的缓存方式。max-age=3600
Content-Disposition指示内容分发网络返回给客户端的内容是以下载的方式提供。并指定下载的文件名。attachment;filename=Demo.xlsx
Content-Language指示内容分发网络返回给客户端的内容语言。zh-CN
Content-Type指示内容分发网络返回给客户端的内容类型。text/plain
Pragma对于 HTTP/1.0,指示内容分发网络返回的内容在客户端的缓存方式。字段值只能是 no-cache,表示不缓存。no-cache

注意事项

在您设置字段时,不能使用以下字段,不然会报错。字段名称不区分大小写。

  • access-check
  • server-timing
  • via
  • x-request-ip
  • x-tt-trace-tag
  • x-bdcdn-logid
  • byte-error-code
  • x-bdcdn-cache-status

如果您输入了这些字段名中的任意一个,会收到以下错误:
暂不支持配置此类头部!

alt