当您需要跨域共享或者访问资源时,您可以通过自定义HTTP响应头来实现。通过本文您可以了解跨域共享的概念、配置逻辑和应用案例。

什么是跨域资源共享

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

跨域资源共享CORS数据交互示意图: 跨域原理
CDN中开启了跨域共享之后交互示意图: CDN参与

开启跨域资源共享

  1. 登录CDN控制台
  2. 在左侧导航栏,单击域名管理
  3. 域名管理页面,单击目标域名对应的管理
  4. 在指定域名的左侧导航栏,单击缓存配置
  5. 单击自定义HTTP响应头页签。
  6. 单击添加,配置自定义HTTP响应头。
  7. 选择增加并设置自定义响应头参数为“Access-Control-Allow-Origin”时,您可以开启跨域校验功能。自定义
    说明 跨域校验默认为关闭状态,只有在 响应头操作为“增加”, 自定义响应头参数为“Access-Control-Allow-Origin”的时候才可以配置。
    • 开启:开启状态下CDN节点将按以下规则对用户做跨域校验,并根据校验结果响应“Access-Control-Allow-Origin”的值。
    • 关闭:关闭状态下CDN节点不会校验用户请求中携带的Origin头,只会固定响应已配置的Access-Control-Allow-Origin值。

举例

示例一:如果跨域资源共享的响应头值设置了单个或者多个值(多个值之间用“,”分隔)。
  • 如果用户请求头里携带的“Origin”参数值与被设置的任意一个值精确匹配,就会响应对应的跨域头。
  • 如果都没有精确匹配上,则不响应跨域头。

CDN上设置:Access-Control-Allow-Origin:http://a.com,https://c.com。

  • 如果用户请求携带的origin头是http://a.com,则CDN节点将会响应Access-Control-Allow-Origin:http://a.com。
  • 如果用户请求携带的origin头是http://c.com,则CDN节点将会响应Access-Control-Allow-Origin:http://c.com。
  • 如果用户请求携带的origin头是http://x.com,则CDN节点将不会响应Access-Control-Allow-Origin。

示例二:如果跨域资源共享的响应头值设置了泛域名,则会校验请求头中Origin值是否能匹配上Access-Control-Allow-Origin的泛域名。

CDN上设置:Access-Control-Allow-Origin:http://*.example.com。
  • 用户请求:Origin:http://a.example.com。CDN响应:Access-Control-Allow-Origin:http://a.example.com。
  • 用户请求:Origin:http://b.example.com。CDN响应:Access-Control-Allow-Origin:http://b.example.com。
  • 用户请求:Origin:http://c.com。CDN不响应。
  • 用户请求:Origin:http://a.123.example.com。CDN响应:Access-Control-Allow-Origin:http://a.123.example.com。
  • 用户请求:Origin:https://a.example.com。CDN不响应(协议头不同,用户请求的是HTTPS协议,CDN上设置的是HTTP协议)。