S3静态Angular网站直接输入子页面URL出现403 AccessDenied问题求助
解决S3静态托管Angular应用直接访问子页面403错误的问题
这是单页应用(SPA)部署到S3的典型问题,根源在于Angular的前端路由机制:
- 从首页跳转子页面时,路由是Angular在浏览器端处理的,没有向S3发起新的文件请求;
- 但直接输入子页面URL(比如
/dashboard)时,浏览器会向S3请求对应路径的文件,而你的S3桶里根本没有dashboard这个文件,自然返回403权限错误(本质是文件不存在,S3返回403而非404是权限配置的表现)。
解决方法很简单,只需要给S3静态托管配置错误文档指向首页:
- 打开AWS S3控制台,找到你的存储桶
kh-mtc-app - 切换到「静态网站托管」标签页
- 在「错误文档」区域,输入
index.html(和你设置的默认索引文档一致) - 保存配置
配置完成后,当访问不存在的路径时,S3会返回index.html,Angular的路由系统就能接管并渲染对应的子页面了,直接输入子页面URL就不会再出现403错误。
内容的提问来源于stack exchange,提问作者Ben
相关产品推荐
相关产品推荐

