跨域访问CDN加速的OSS资源失败
问题描述
为了实现跨域访问,保证跨域数据传输的安全进行,在阿里云OSS控制台设置了跨域CORS规则后,使用阿里云CDN加速域名访问OSS资源失败。
问题原因
用户第一次访问CDN时,CDN会检查是否包含数据,然后回源到源站进行访问。源站进行对比将数据经过CDN时会反馈给客户端浏览器。浏览器比对Access-Control-Allow-Origin后,允许正确则跨域正常。 当第二个用户访问时,CDN检测到这个文件,会直接给客户端反馈缓存页面。CDN之所以跨域访问失败是因为CDN缓存了OSS未配置CORS之前的文件及其头部,造成客户端浏览器判断失败,不允许访问。
解决方案
配置对应跨越访问参数的值,具体操作如下:
登录CDN控制台。
分别配置HTTP响应头的
Access-Control-Allow-Origin
、Access-Control-Allow-Methods
和Access-Control-Max-Age
参数值,详情请参见配置自定义HTTP响应头。说明以上参数设置为示例截图,现场请以实际情况进行配置。
配置以上参数之后只要在CDN节点访问就会包含3个头部信息,不会影响正常访问。且在跨域验证时保证了正常使用。测试结果如下。
适用于
CDN