加载AWS S3项目文件时出现403 Forbidden错误
解决S3部署Vite应用时GLB模型加载403 Forbidden问题
针对你遇到的模型加载403错误,按以下步骤排查解决:
检查文件权限与路径匹配
- 进入S3控制台,找到
ts1桶里的model1.glb,查看对象ACL。如果文件是私有权限,即便桶策略公开,也会返回403。手动将文件ACL设为「公有读」(给Everyone分配读取权限)后重试。 - 确认请求URL里的文件路径、大小写完全匹配S3中的实际对象:S3对路径大小写敏感,比如
Model1.glb和model1.glb会被视为不同文件。
- 进入S3控制台,找到
修正Vite构建的资源路径
在vite.config.js中指定base参数,避免构建后资源路径错误:export default defineConfig({ base: './', // 若S3桶有访问前缀,可设为 '/ts1/' // 其他配置项 })重新构建dist文件夹并上传,然后通过浏览器开发者工具的Network面板,确认
model1.glb的请求URL是正确的S3对象地址。验证S3桶配置
- 核对桶策略中的桶名
ts1是否正确,Resource字段arn:aws:s3:::ts1/*要覆盖所有需要访问的对象路径。 - 确保桶的「阻止公共访问」已关闭(不要勾选“阻止所有公共访问”),且已开启静态网站托管,索引文档设置为
index.html。 - 如果用了CloudFront分发,检查Origin Access Control(OAC)是否允许CloudFront访问S3对象,同时在CloudFront行为规则中允许GLB资源的GET请求,清除缓存后再测试。
- 核对桶策略中的桶名
调整文件上传方式
用AWS CLI上传dist文件夹时,必须加上--acl public-read参数,确保文件默认权限为公有读:aws s3 sync dist/ s3://ts1/ --acl public-read避免上传时默认私有ACL导致的权限冲突。
用Policy Simulator排查权限冲突
打开AWS IAM控制台的Policy Simulator工具,模拟对arn:aws:s3:::ts1/model1.glb的s3:GetObject操作,检查是否被允许,以此排查是否存在其他IAM策略或桶策略的冲突。
内容的提问来源于stack exchange,提问作者CosmicSeizure
相关产品推荐
相关产品推荐

