HTTP响应头是HTTP消息头中的其中一个部分,HTTP消息头准确地描述了正在获取的资源、服务器或客户端的行为,定义了HTTP事务中的具体操作参数。通过配置自定义HTTP响应头,当您请求加速域名下的资源时,可以在返回的响应消息中添加您配置的响应头,以实现跨域访问。

背景信息

HTTP消息头是指在超文本传输协议HTTP(Hypertext Transfer Protocol)的请求和响应消息中,协议头部的组件。在HTTP消息头中,按其出现的上下文环境分为通用头、请求头和响应头等。

跨域资源共享CORS(Cross-Origin Resource Sharing)简称跨域访问,是HTML5提供的标准跨域解决方案,允许Web应用服务器进行跨域访问控制,使得跨域数据传输得以安全进行。

适用场景

当您的业务用户请求业务资源时,您可以在返回的响应消息中配置响应头,以实现跨域访问。当全站加速收到一个跨域请求时,会读取全站加速上对应的CORS规则,然后进行相应的权限检查。全站加速会依次检查每一条规则,使用第一条匹配的规则来允许请求并返回对应的Header。如果所有规则都匹配失败,则不附加任何CORS相关的Header。

HTTP响应头的配置属于域名维度的配置,一旦配置生效,便会对域名下所有资源的响应消息生效。配置HTTP响应头仅影响客户端(例如浏览器)的响应行为,不会影响到全站加速节点的缓存行为。泛域名暂不支持配置自定义HTTP响应头。

操作步骤

  1. 登录全站加速控制台
  2. 在左侧导航栏,单击域名管理
  3. 域名管理页面,单击目标域名对应的配置
  4. 在指定域名的左侧导航栏,单击缓存配置
  5. 自定义HTTP响应头对话框,单击添加,根据下表中的参数含义设置自定义HTTP响应头。
    HTTP头设置
    参数 说明
    响应头操作 您可以增加、删除、变更和替换指定的响应头。
    自定义响应头参数 选择自定义响应头参数。详细信息,请参见响应头参数
    描述 您自定义的HTTP头的作用。
    自定义响应头名称 自定义响应头参数选择为自定义时,需要配置自定义响应头名称。自定义响应头名称要求如下:
    • 由大小写字母、短划线(-)和数字组成。
    • 长度为1~100个字符。
    响应头值 输入您要设置的响应头值。详细信息,请参见响应头参数
    是否允许重复
    • 允许:允许重复将会保留源站返回的头,同时会加上一个同名的头。
    • 不允许:如果不允许重复,源站返回的头会被新配置的同名头覆盖。
    跨域校验 跨域校验默认为关闭状态,只有在响应头操作为“增加”,自定义响应头参数为“Access-Control-Allow-Origin”的时候才可以配置。
    • 开启:开启状态下全站加速节点将按以下规则对用户做跨域校验,并根据校验结果响应“Access-Control-Allow-Origin”的值。
    • 关闭:关闭状态下全站加速节点不会校验用户请求中携带的Origin头,只会固定响应已配置的Access-Control-Allow-Origin值。
    说明
    跨域校验规则:
    • 如果自定义响应头参数“Access-Control-Allow-Origin”的值设置为“*”不论用户请求里面是否携带“Origin”参数,也不论携带的“Origin”参数为何值,都固定返回“Access-Control-Allow-Origin:*”。
    • 如果跨域资源共享的响应头值设置了单个或者多个值(多个值之间用“,”分隔)。
      • 如果用户请求头里携带的“Origin”参数值与被设置的任意一个值精确匹配,就会响应对应的跨域头。
      • 如果都没有精确匹配上,则不响应跨域头。
    • 如果跨域资源共享的响应头值设置了泛域名,则会校验请求头中Origin值是否能匹配上“Access-Control-Allow-Origin”的泛域名。

    配置示例请参见DCDN如何配置跨域资源共享(CORS)及注意事项

  6. 单击确定,完成配置。

    HTTP头列表中,您也可以单击修改删除,对当前配置的HTTP头进行相应操作。

响应头参数

响应头参数 说明 示例
自定义 支持添加自定义响应头。自定义响应头名称要求如下:
  • 由大小写字母、短划线(-)和数字组成。
  • 长度为1~100个字符。
Test-Header
Content-Type 指定浏览器响应对象的内容类型。 text/html
Cache-Control 指定客户端程序请求和响应遵循的缓存机制。 no-cache
Content-Disposition 指定客户端程序把请求所得的内容存为一个文件时提供的默认的文件名。 examplefile.txt
Content-Language 指定浏览器响应对象的语言。 en-US
Expires 指定浏览器响应对象的过期时间。 Wed, 21 Oct 2015 07:28:00 GMT
Pragma Pragma HTTP 1.0是用于实现特定指令的响应头,具有通过请求和响应链实现各种效果的功能,可用于兼容HTTP 1.1。 no-cache
Access-Control-Allow-Origin 指定允许的跨域请求的来源。填写星号(*)表示全部域名;您也可以填写完整域名,例如http://www.aliyun.com
说明
  • 响应头值支持配置为“*”,表示任意来源。
  • 响应头值非“*”的情况下,支持配置单个或者多个IP、域名、或者IP和域名混合。相互间用“,”分隔。
  • 响应头值非“*”的情况下,必须包含协议头“http:// ”或者“https://”。
  • 响应头值支持携带端口。
  • 响应头值支持泛域名。
  • *
  • http://www.aliyun.com
Access-Control-Allow-Methods 指定允许的跨域请求方法。可同时设置多个方法,多个方法用英文逗号(,)分隔。 POST,GET
Access-Control-Allow-Headers 指定允许的跨域请求字段。 X-Custom-Header
Access-Control-Max-Age 指定客户端程序对特定资源的预请求返回结果的缓存时间,单位为秒。 600
Access-Control-Expose-Headers 指定允许访问的自定义头信息。 Content-Length
Access-Control-Request-Method 发出请求时报头用于预检请求让服务器知道哪些HTTP方法的实际请求时将被使用。 POST
Access-Control-Request-Headers 发出请求时报头用于预检请求让服务器知道哪些HTTP头的实际请求时将被使用。 X-PINGOTHER
Access-Control-Allow-Credentials 该响应头表示是否可以将对请求的响应暴露给页面。
  • 返回true:表示可以暴露。
  • 返回其他值:表示不可以暴露。
true