文档首页> 内容分发网络 CDN> 用户指南> 域名配置> 高级配置> HTTP header配置(跨域请求)
更新时间:2024-02-21 GMT+08:00

HTTP header配置(跨域请求)

HTTP header即HTTP消息头,是指在超文本传输协议(Hypertext Transfer Protocol,HTTP)的请求和响应消息中的消息头部分,定义了HTTP传输过程中的具体参数。

跨域资源共享CORS(Cross-origin resource sharing)简称跨域访问,当A网站去访问B网站的资源时,就会发出跨域请求。如果此时B网站的资源不允许A网站进行跨域资源访问,就会遇到跨域问题。此时就可以使用HTTP Header配置功能,在返回的响应消息中添加所需的消息头,以实现跨域访问等目的。

注意事项

  • 部分头部不支持自助设置/删除,具体清单请参见限制条件
  • HTTP响应头配置规则最多可配置10条。
  • 由于HTTP header配置是针对域名,因此一旦配置生效,用户对该域名下任意一个资源的响应消息中均会加入所配置的消息头。HTTP响应消息头配置仅会影响客户端(浏览器)的响应行为,不影响CDN节点的缓存行为。
  • 如果您的域名源站是OBS桶域名且CDN配置了跨域规则,OBS侧也需要同时配置跨域资源共享

支持配置的响应头

华为云CDN支持以下几种HTTP响应消息头进行自定义取值。

  • Content-Disposition

    Content-disposition消息头用来激活客户端下载并指定所下载文件的名称。

    服务端向客户端浏览器发送的文件,如果是浏览器支持的文件类型(如txt、jpg等),则默认使用浏览器打开。如果该文件需要用户以附件形式下载并保存为指定名称的文件,则可通过配置Content-disposition消息头实现。

    如果您使用了2022年1月1日以后创建的OBS桶作为源站,并且需要支持在线预览功能,您要设置“Content-Disposition”的值为“inline”,详见如何在浏览器中在线预览OBS中的对象?

  • Content-Language

    Content-Language消息头用来指明向客户页面端提供的用户偏好语言或语言组合,可以为不同身份用户定制不同的内容。

  • Access-Control-Allow-Origin

    Access-Control-Allow-Origin响应头携带了服务端验证后允许的跨域请求域名。对于简单跨域请求而言,浏览器经此消息头可以确认是否返回所请求的资源内容给客户端。对于预检请求而言,浏览器经此消息头可以确认是否可以向服务端发起真正的跨域请求。

    为防止因浏览器缓存导致报跨域错误,跨域请求头“Access-Control-Allow-Origin”配置完成后,请您及时清理浏览器缓存。

  • Access-Control-Allow-Methods

    Access-Control-Allow-Methods响应头携带了服务端验证后允许的跨域请求方法。对于简单跨域请求而言,浏览器经此消息头可以确认是否返回所请求的资源内容给客户端。对于预检请求而言,浏览器经此消息头可以确认是否可以向服务端发起真正的跨域请求。

  • Access-Control-Max-Age

    Access-Control-Max-Age响应头携带了服务端允许的跨域预检请求结果允许缓存的时间。浏览器经此消息头可以确认预检请求结果的缓存时间,在缓存有效期内,浏览器可以使用缓存的预检请求结果判断是否向服务端发起跨域请求。缓存的预检请求结果过期后,下次请求时浏览器需再次向服务端发送预检请求。

  • Access-Control-Expose-Headers

    Access-Control-Expose-Headers用于指定浏览器可以暴露给客户端的响应消息头。您可以通过配置Access-Control-Expose-Headers自定义客户端可见的响应消息头。浏览器默认客户端可见的响应头有:Cache-Control、Content-Language、Content-Type、Expires、Last-Modified、Pragma。

  • 自定义响应头

    如果上述响应头不能满足您的业务需求,CDN支持自定义响应头配置,支持以字母开头,字母、数字和短横杠(-)组合,长度1~100以内的自定义响应头名称。

操作步骤

  1. 登录CDN控制台
  2. 在左侧菜单栏中,选择域名管理
  3. 在域名列表中,单击需要修改的域名或域名所在行的“设置”,进入域名配置页面。
  4. 选择“高级配置”页签。
  5. 在HTTP header配置模块,单击“编辑”,系统弹出“配置HTTP header”对话框,如下图所示。
    图1 配置HTTP header

  6. 单击“添加”,选择对应响应头操作类型。

    响应头操作

    说明

    设置

    • 若设置的头部已存在,则设置后的头部参数取值覆盖原值。
    • 若设置的头部不存在,则会增加该头部。

    删除

    删除指定的响应头参数。

  7. 设置头部参数及取值。

    参数

    取值规则

    取值样例

    Content-disposition

    激活客户端下载并指定所下载文件的名称。

    取值规则:常用配置如右侧取值样例所示。

    attachment;filename=FileName.xls

    Content-Language

    指定客户端响应页面的语言。

    取值规则:常用配置如右侧取值样例所示。

    zh-CN

    en-US

    Access-Control-Allow-Origin

    指定跨域请求时,允许访问该资源的外域URL(即请求来源)。

    取值规则

    • 支持配置一个具体URL,最多输入66个URL。
    • 支持配置泛域名。
    • 总的字符数不超过1000。
    • 多个URL之间用“,”分割。
    • 在配置指定域名时,需要加上“http://” 或 “https://”前缀。
    • 支持配置“*”,如果取值为“*”,则不允许输入其它URL。
    • 支持配置带端口的域名。
    • 支持配置null,不区分大小写。

    样例1:

    https://www.example.com

    样例2:

    *

    样例3:

    https://www.example.com,https://www.example01.com,https://*.abc.com

    Access-Control-Allow-Methods

    指定跨域请求时,允许使用的HTTP请求方法。

    取值规则:支持同时配置多个请求方法,多个方法间用“,”分割。

    GET,POST,HEAD

    Access-Control-Max-Age

    指定跨域请求时,客户端程序对特定资源的预检请求返回结果的缓存时间。

    取值规则:取值单位为秒,取值范围为:0~1000000000。

    86400

    Access-Control-Expose-Headers

    指定跨域请求时,客户端可见的响应头部信息。

    取值规则:长度范围1~256,不支持中文字符,支持同时配置多个响应头,多个响应头间用“,”分割。

    Content-Length,Content-Encoding

    Access-control-allow-headers

    用于指定跨域请求时,服务器允许请求中携带的字段。

    取值规则:长度范围1~1000,不支持中文字符,支持同时配置多个字段,多个字段间用“,”分割。

    X- Custom-Header

    自定义响应头

    跨域请求时,客户自定义的响应头部信息。

    取值规则:长度范围1~1000,支持字母、空格、数字和特定字符“.”、“-”、“_”、“*”、“#”、“!”、“&”、“+”、“|”、“^”、“~”、“'”、“"”、“/”、“:”、“;”、“,”、“=”、“@”、“?”、“<”、“>”。

    说明:
    • 自定义参数为Cache-Control时,支持的取值有:max-age=***(***代表数字)、private、no-cache、no-store、public,且不支持同时配置多个值。

    x-testcdn

  8. 单击“确定”,完成HTTP header配置。

限制条件

  • 如果您的后台存在特殊配置,暂不支持配置Content-Type、Expires、Cache-Control。
  • 以下响应头仅支持修改,不支持删除:

    Content-Base

    Content-Disposition

    Server

    Content-Language

    Cache-Control

    Expires

    Content-Type

    -

  • CDN暂不支持以下响应头配置:

    A_Dynamic

    If-None-Match

    Sec-WebSocket-Origin

    X-Forward-Peer

    Accept-Ranges

    If-Range

    Sec-WebSocket-Protocol

    X-Forward-Type

    X-Forward-Ip

    Keep-Alive

    Sec-WebSocket-Version

    X-Forward-Uri

    Allow

    Key

    Set-Cookie

    X-Forwarded-For

    Authentication-Info

    Last-Modified

    Tcp-Retrans

    X-IP-Region

    Authorization

    Link

    Title

    X-IP-Region-CN

    X-Forward-Measured

    Location

    Transfer-Encoding

    X-Ip-Blackwhite-List

    Cdn-Qos

    Max-Forwards

    Upgrade

    X-Local-Ip

    Cdn-Server-Ip

    Meter

    Vary

    X-Log-Url

    Cdn-Src-Ip

    Mime-Version

    Via

    X-MAA-Alias

    Conf-Err-Host

    Negotiate

    WWW-Authenticate

    X-MAA-Auth

    Conf-File

    Origin

    Warning

    X-Max-Conns

    Conf-File-List

    Partition-Block-Size

    Ws-Hdr

    X-Mem-Url

    Conf-Option

    Pragma

    WsTag

    X-Mgr-Traffic

    Conf-Other

    Proxy-Authenticate

    X-Accelerator-Vary

    X-Miss-Rate-Limit

    Connection

    Proxy-Authentication-Info

    X-Appa

    X-Miss-Times-Limit

    Content-Encoding

    Proxy-Authorization

    X-Appa-Origin

    X-No-Referer

    Content-Length

    Proxy-Connection

    X-Black-List

    X-Query-Key

    Content-Location

    Proxy-Support

    X-Bwctrl-Limit

    X-Rate-Limit

    Content-MD5

    Public

    X-Bwctrl-Para

    X-Refresh-Pattern

    Content-Range

    Purge-Domain

    X-Cache

    X-Request-Id

    Sec-WebSocket-Nonce

    Purge-Extra

    X-Cache-2

    X-Request-Uri

    Date

    Range

    X-Cache-Lookup

    X-Request-Url

    Dynamic

    Request-Range

    X-Cacheable

    X-Resp-Time

    ETag

    Retry-After

    X-Cdn-Src-Port

    X-Rewrite-Url

    Error

    Sec-WebSocket-Accept

    X-Client-Ip

    X-Squid-Error

    Expect

    Sec-WebSocket-Draft

    X-DNS-Time

    X-Times-Limit

    If-Modified-Since

    Sec-WebSocket-Extensions

    X-Denyattack-Dynconf

    X-Url-Blackwhite-List

    From

    Sec-WebSocket-Key

    X-Error-Status

    X-Via-CDN

    Front-End-Https

    Sec-WebSocket-Key1

    X-Error-URL

    X-White-List

    Host

    Sec-WebSocket-Key2

    X-Forward-Host

    -

    If-Match

    Sec-WebSocket-Location

    -

    -