【最佳实践】巡检项:内容分发网络(CDN)COS源跨域一致性

2022-04-28 10:07:22 浏览数 (2)

问题描述

在CDN源站是COS的场景下,如果COS服务配置了跨域策略, CDN没有配置相关的跨域策略, 那么当用户请求CDN时, 如果节点没有缓存,则发起回源。 节点会缓存源站返回的跨域头部。 后续请求再次命中接点时,会直接返回缓存的跨域头, 这样可能会出现返回跨域头信息不匹配,造成的跨域错误。

访问流程如下:

跨域报错跨域报错

解决方案

跨域资源共享(Cross-Origin Resource Sharing,CORS)机制,我们简称为跨域访问,允许 Web应用服务器进行跨域访问控制,从而使跨域数据传输得以安全进行。CORS 需要浏览器和服务器同时支持。目前,所有浏览器都支持该功能,IE 浏览器要求版本 IE10 或以上。实现 CORS 通信的关键是服务器。只要服务器实现了 CORS 接口,即可跨源通信。CDN和COS均支持跨域头设置,可供用户灵活使用。

当CDN的源站是COS的时候,如果COS设置了跨域头,建议CDN的跨域头和COS保持一致的设置,避免CDN缓存头不全,造成的其他用户本想放行的域名跨域头不匹配。 如果COS没有设置跨域头,直接在CDN设置了跨域头, 用户访问CDN的时候以CDN的设置为准。

1. 查看及配置COS源站相关的跨域策略

COS的跨域配置COS的跨域配置

来源 Origin:允许跨域请求的来源。支持添加域名和 IP 地址。

  • 域名末尾不需要携带/
  • 可以同时指定多个来源,每行只能填写一个。
  • 配置支持*,表示全部域名和 IP 地址都允许,不推荐。
  • 支持单个具体域名,形如 http://www.abc.com
  • 支持二级泛域名,形如http://*.abc.com ,但是每行只能有一个*号。
  • 注意不要遗漏协议名 http 或 https,若端口不是默认的80,还需要带上端口。其中 IP 地址的举例为 http://10.10.10.10

2. 查看CDN配置, 确保源站如果设置了,和源站一致的跨域策略

点开对应CDN的域名『域名管理』--》『高级配置』里面有HTTP响应头配置,查看是否和源站配置了一致的跨域策略。

CDN的跨域配置CDN的跨域配置

Access-Control-Allow-Origin用于解决资源的跨域权限问题,域值定义了允许访问该资源的域。若来源请求 Host 在域名配置列表之内,则直接填充对应值在返回头部中。也可以设置通配符 “*”,允许被所有域请求。更多说明请见Access-Control-Allow-Origin 匹配模式介绍。

支持输入“*” ,或多个域名 / IP / 域名与 IP 混填(必须包含http://https://,填写示例:http://test.com,http://1.1.1.1, 逗号隔开)(注意:输入框最多可输入1000字符)。

注意事项

更多详细资料请参见关于 HTTP 访问控制的说明;

官方文档COS跨域设置参考设置跨域访问 CDN设置参考HTTP响应头设置

0 人点赞