角路由不适用于Cloudfront和S3

时间:2019-02-09 22:57:54

标签: angular http amazon-s3 amazon-cloudfront

我在S3上托管了一个angular 6网站,并启用了S3网站托管。另外,我前面有一个CloudFront发行版。 我配置了云前端,以便将任何内容重定向到index.html并使用200进行响应。

但是,只能使用CloudFront访问“ /”。其他网址(例如“ / *”)未加载。角度加载改为“ /”。好像角度只看到“ /”。

我添加了一些代码来记录传递给angular的url,结果始终是“ /”。

另外,有时“ / *” URL甚至不会加载“ /”,并且在控制台“未捕获的SyntaxError:意外的令牌<”上看到此错误。

你们知道是什么原因造成的吗?

S3设置 enter image description here

云前端行为:

enter image description here

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:3)

请查看:how to deploy react and angular apps to S3/Cloudfront

您是否为403(禁止)和404(未找到)响应创建了自定义行为?

每次有人向您的网站发出请求时,例如www.yourwebsite.com/ routeuri ,请注意,此URI routeuri 在您的来源中不存在(即S3 BUCKET),因此您的来源(S3 BUCKET)将返回403响应(禁止)。因此,您还应该为403状态代码添加自定义错误响应,如下图所示:

enter image description here

还请确保同时在 Cloudfront S3存储桶中将 index.html 添加为默认根对象。 / strong>,如下图所示:

Cloudfront root object s3 bucket

我真的建议您阅读官方文档以了解CloudFront与起源的关系。

答案 1 :(得分:0)

就我而言,这可以通过在“静态网站托管”下添加index.html作为“错误文档”来解决。没什么。