You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用带签名Cookie的Cloud CDN时为何200 OK却报CORS错误?

问题背景
  • 采用Cloud CDN服务,已创建存储桶和负载均衡器
  • 主机路径规则:主机images.example.com,路径/* 指向存储桶
  • DNS配置:A记录image.example.com指向负载均衡器IP
  • 存储桶CORS策略包含:http://www.example.com、images.example.com、http:00.00.00(负载均衡器IP)
  • 请求细节:请求头带Origin: http://www.example.com,响应头返回Access-Control-Allow-Origin: http://www.example.com,请求资源为http://images.example.com/<bucket object path>
  • 控制台报错:

openseadragon.js_changed:13202 HTTP 0 attempting to load TileSource:
http://images.recordspreservation.org/Brasil/S%C3%A3o%20Paulo/Jundia%C3%AD/…hora%20do%20Desterro/%C3%93bitos%201744-1787/IMG_007_0025/IMG_007_0025.dzi
error @ openseadragon.js_changed:13202
request.onreadystatechange @ openseadragon.js_changed:2448

可能的错误原因
  1. DNS与主机规则不匹配:配置的CDN主机规则是images.example.com(复数),但DNS记录是image.example.com(单数),导致请求无法正确路由到负载均衡器,直接触发HTTP 0错误(这类错误通常意味着请求连连接都没建立成功)。
  2. CORS策略格式错误:负载均衡器IP的CORS条目写成http:00.00.00,缺少//和完整IP段(正确格式应该是http://x.x.x.x),会导致CORS策略解析失效,哪怕响应头返回了正确的Access-Control-Allow-Origin,也可能因为策略本身不合法引发后续加载异常。
  3. 请求域名与配置不匹配:控制台报错里请求的资源域名是images.recordspreservation.org,但描述的CDN配置是images.example.com,说明实际请求的域名和配置的CDN域名完全不一致,路由和CORS规则根本没生效。
额外排查项
  • 核对OpenSeadragon的TileSource配置:确认它请求的域名是不是你CDN配置的images.example.com,别搞混了域名。
  • 验证DNS解析:用nslookup或dig工具查images.example.com的解析结果,看是否正确指向负载均衡器IP,排除DNS缓存或配置写错的问题。
  • 检查负载均衡器状态:确认负载均衡器正常运行,后端存储桶能被正常访问,避免后端服务挂了导致请求失败。
  • 清除CDN缓存:CDN可能缓存了旧的CORS响应头,清缓存后再测试。
  • 检查存储桶对象权限:确保请求的存储桶对象有公开读取权限,或者CDN服务有访问该对象的权限。
  • 排查HTTP/HTTPS混合问题:如果主站是HTTP但CDN用了HTTPS,或者反过来,可能引发跨协议的安全限制;另外如果OpenSeadragon请求的是HTTPS资源但主站是HTTP,也会触发浏览器安全拦截。
  • 查看负载均衡器日志:检查日志里请求是否到达了存储桶,有没有返回403、404这类错误状态码。

内容的提问来源于stack exchange,提问作者Sherry Camargo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 15:23:20