配置CloudFront+S3仍遇CORS错误,求排查建议
验证响应头实际返回情况
用curl直接请求CDN资源,检查响应头是否包含Access-Control-Allow-Origin:curl -I -H "Origin: https://bodes.io" https://cdn.bodes.io/img/bodes.clear.light.small.png若未返回该头,先确认
SimpleCORS响应头策略是否正确关联到对应行为,或策略本身是否确实配置了Access-Control-Allow-Origin: *。绕开CloudFront测试S3源站
直接请求S3存储桶内的资源(格式为https://<bucket-name>.s3.<region>.amazonaws.com/img/bodes.clear.light.small.png),同样带Origin头测试:curl -I -H "Origin: https://bodes.io" https://<your-bucket>.s3.<region>.amazonaws.com/img/bodes.clear.light.small.png如果S3也没返回CORS头,说明S3的CORS策略可能未保存生效,或是桶策略/对象ACL阻止了OPTIONS请求或CORS响应。
确认CloudFront行为的路径匹配
检查配置的行为路径模式是否覆盖了/img/*。若行为仅匹配特定路径,而当前资源未命中,会使用默认行为的配置,可能缺失CORS相关设置。检查源请求策略的转发规则
确认CORS-S3Origin源请求策略是否包含了Origin头的转发。如果该头未转发到S3,S3不会返回CORS响应头,CloudFront自然无法返回对应内容。排查缓存失效的有效性
确认缓存失效的路径是/*或具体的/img/bodes.clear.light.small.png,避免因路径输入错误未覆盖目标资源。此外,CloudFront缓存失效需数分钟生效,可等待后再测试。检查Lambda@Edge的干预
若配置了Lambda@Edge函数,查看函数代码是否修改了响应头,意外移除了Access-Control-Allow-Origin。
内容的提问来源于stack exchange,提问作者Linux Pro

