S3上部署的Angular 2+应用程序出现路由问题

时间:2019-12-03 04:30:23

标签: angular amazon-s3

我们在Amazon S3上托管了一个静态Angular 2网站。

我们的应用部署在http://abc.domain.s3.amazonaws.com/index.html 如果用户未登录,我们的应用程序会将用户重定向到登录页面:http://abc.domain.s3.amazonaws.com/Platform/Login,该页面工作正常。

但是,如果刷新http://abc.domain.s3.amazonaws.com/Platform/Login(或直接访问它),它将返回“ NoSuchKey,指定的键不存在”错误。

我们已将“索引文档”和“错误文档”设置为index.html。并且该存储桶具有公共访问权限。但是我们无法解决此问题。

我们没有将Cloudfront与S3和route53结合使用。

感谢您的帮助!

enter image description here

1 个答案:

答案 0 :(得分:1)

检查您的存储桶策略设置。如果未设置,请在下面使用 Permission-> Bucket Policy

设置存储桶策略
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt126637111000",
            "Effect": "Allow",
            "Principal": "*",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:DeleteObject"
            ],
            "Resource": "arn:aws:s3:::www.xyz.com/*"
        },
        {
            "Sid": "S3 Access Permissions",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::142412414124:root"
            },
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::www.xyz.com/*",
                "arn:aws:s3:::www.xyz.com"
            ]
        }
    ]
}

还要检查CORS配置。您可以在下面找到 权限-> CORS配置

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedMethod>PUT</AllowedMethod>
    <AllowedMethod>POST</AllowedMethod>
    <AllowedMethod>GET</AllowedMethod>
    <AllowedMethod>DELETE</AllowedMethod>
    <MaxAgeSeconds>3000</MaxAgeSeconds>
    <AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>