跨域访问CDN加速的OSS资源失败

本文介绍跨域访问CDN加速的OSS资源失败的原因和解决方法。

问题描述

在阿里云OSS控制台设置了跨域CORS规则后,使用阿里云CDN加速域名访问OSS资源失败。

问题原因

  • 通过OSS控制台配置CORS规则后,如果CDN节点缓存了旧的、未配置CORS时的资源响应头,则新的跨域请求可能因为浏览器收到的是缓存中的过期头部信息而失败。

  • 通过OSS控制台配置的CORS规则可能没有设置为允许目标域名进行跨域访问,或者HTTP方法(如GET、POST、DELETE等)以及自定义请求头等没有被正确指定。

解决方案

  1. 登录CDN控制台

  2. 在左侧导航栏,单击域名管理

  3. 域名管理页面,单击目标域名对应的管理

  4. 在左侧导航栏,单击缓存配置,然后单击节点HTTP响应头页签。

  5. 节点HTTP响应头页签,单击添加

  6. 节点HTTP响应头对话框,按以下说明分别配置自定义响应头参数以及对应的响应头值。

    说明

    以下参数设置仅供参考,请结合实际场景调整各个配置项。

    自定义响应头参数

    响应头值

    Access-Control-Allow-Origin

    设置为通配符星号(*),并开启跨域验证。

    Access-Control-Allow-Methods

    POST,GET,HEAD,PUT,DELETE

    Access-Control-Max-Age

    3600

    配置效果如下图所示:

    image

    配置以上参数后,通过CDN节点访问都会包含以上3个Header信息,且确保跨域校验时可以正常使用。测试结果如下。 TB1nRb4JFXXXXaZXXXXXXXXXXXX-811-372.png