【问题标题】:403 Forbidden. when serving multipage app via cloudfront from s3403 禁止。从 s3 通过云端服务多页应用程序时
【发布时间】:2021-03-28 10:29:25
【问题描述】:

一般来说一切正常,我有一个 gatsby 生成的静态网站、用于静态托管的 s3 存储桶设置和用于提供文件的云端分发。问题是当我转到子页面并刷新页面或直接转到 url 时,我收到 403 错误。当我在 url 末尾附加 /index.html 时,不会发生这种情况。

在我的云端设置中,我将默认根对象设置为index.html,因此根据文档,一切都应该工作。这不是 SPA,因此将 403 错误页面设置为 index.html 将无济于事 - 它只会重定向到主页。

我想要的行为是当用户访问 url http://example.com/path/to/directory 时,会提供来自 /path/to/directory/index.html 的 index.html 文件。

S3 存储桶权限:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::[bucket-name]/*"
        },
        {
            "Sid": "2",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::cloudfront:user/[user]"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::[bucket-name]/*"
        },
        {
            "Sid": "3",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::cloudfront:user/[user]"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::[bucket-name]/*"
        }
    ]
}

【问题讨论】:

  • 您是否在 CF 发行版中将 Default Root Object 定义为 index.html
  • "在我的云端设置中,我将默认根对象设置为 index.html"

标签: amazon-web-services amazon-s3


【解决方案1】:

Cloudfront 的Default Root Object 仅在用户请求根 URL 时适用,而不适用于子文件夹。 子文件夹的索引文档需要在S3中配置:https://docs.aws.amazon.com/AmazonS3/latest/userguide/IndexDocumentSupport.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-16
    • 1970-01-01
    • 1970-01-01
    • 2017-05-01
    • 2022-11-08
    • 2016-09-20
    • 2021-09-05
    相关资源
    最近更新 更多