我已将Angular静态网站部署到Amazon S3并使用Cloudfront。当我访问默认页面myurl.com/
时,一切正常,我可以浏览页面。但是,例如,如果我直接myurl.com/posts
转到某个页面,我将获得拒绝访问。如果我使用amazon s3网站端点执行此操作,则会收到404响应。
S3
Cloudfront
答案 0 :(得分:1)
documentation指出出于多种原因,CloudFront中将返回403。分辨率之一是The requested objects must exist in the bucket.
。
当您尝试访问不存在的对象时,CloudFront可能会将其变成您正在接收的403。
您应该尝试访问仅存在的密钥,并将s3端点配置为在页面不存在的时候使用error document。
答案 1 :(得分:0)
在我的情况下,我设置了一个默认的根对象并且一切正常,等待大约 10 分钟后,设置更改同步。 http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/DefaultRootObject.html
使用 CloudFront 控制台指定默认根对象:
登录 AWS 管理控制台并在 https://console.aws.amazon.com/cloudfront/ 打开 Amazon CloudFront 控制台。
在顶部窗格的分发列表中,选择要更新的分发。
在“分发详细信息”窗格中的“常规”选项卡上,单击“编辑”。
在“编辑分发”对话框的“默认根对象”字段中,输入默认根对象的文件名。
仅输入对象名称,例如 index.html。请勿在对象名称前添加 /。
要保存更改,请单击是,编辑。