访问网站出现Access-Control-Allow-Origin等错误,求排查建议
问题排查:CORS错误与S3资源403访问问题
错误信息
[Error] Failed to load resource: 服务器返回403 (Forbidden) 状态码 (all.min.css, line 0)
[Error] Origin https://aecplatform.com 不被Access-Control-Allow-Origin允许。状态码: 503
[Error] Failed to load resource: Origin https://aecplatform.com 不被Access-Control-Allow-Origin允许。状态码: 503 (signIn, line 0)
[Error] Fetch API 无法加载 https://api.aecplatform.com/user/signIn,原因是跨域访问控制检查失败。
当前S3 CORS策略
[ { "AllowedHeaders": [ "*" ], "AllowedMethods": [ "GET", "HEAD" ], "AllowedOrigins": [ "*" ], "ExposeHeaders": [], "MaxAgeSeconds": 3000 } ]
排查建议
一、针对S3资源403(all.min.css加载失败)
- 检查S3对象权限:确认该CSS文件的**访问控制列表(ACL)**是否开启公开读权限,或Bucket Policy是否配置了
s3:GetObject权限给匿名用户/对应来源。 - 验证静态网站托管配置:若通过S3静态网站托管访问资源,确认Bucket策略是否正确授权,同时检查访问域名是否为托管域名(而非S3默认的对象存储域名)。
- 校验CORS策略生效情况:用
curl -I <你的S3 CSS资源URL>命令查看响应头,确认是否返回Access-Control-Allow-Origin,同时查看403错误的具体类型(如AccessDenied),区分是权限问题还是CORS问题。
二、针对API接口的CORS+503错误(signIn接口)
- 优先排查API服务状态:503是服务不可用状态码,CORS错误大概率是服务异常导致的附带问题。直接访问
https://api.aecplatform.com/user/signIn或用curl -I命令查看原始响应,确认服务是否正常运行。 - 独立配置API的CORS规则:S3的CORS策略仅作用于S3资源,和API服务器无关。若API服务恢复后仍有CORS错误,需在API服务器端配置允许
https://aecplatform.com作为来源,并包含登录接口使用的请求方法(通常是POST)。 - 确认请求方法匹配:登录接口一般使用POST,当前S3的CORS策略仅允许GET/HEAD,不要混淆两者的配置范围。
内容的提问来源于stack exchange,提问作者Andrew Karp
相关产品推荐
相关产品推荐

