小编Gui*_*ral的帖子

Cloudfront 错误页面上未调用 Lambda@Edge 函数

我有一个 Angular 应用程序的静态文件通过 Cloudfront 在 S3 存储桶上提供。我的 Cloudfront 发行版设置了错误页面,因此它仍然呈现 Angular 的 index.html。这意味着,如果我请求<cloudfront-distribution>.cloudfront.net/home-page,而不是说它没有找到home-page在 S3 存储桶上命名的文件,它仍然会渲染角度应用程序,并且角度应用程序将处理该/home-page路由。

我需要在应用程序服务器上包含一些安全标头,因此我设置了 Lambda@Edge 函数以将这些标头注入查看器响应事件(如此处所述https://aws.amazon.com/blogs/networking-and-content -delivery/adding-http-security-headers-using-lambdaedge-and-amazon-cloudfront/)。

Lambda@Edge 适用于实际对应于 S3 存储桶中的文件的路由(如果我image.png在 S3 存储桶的根文件夹上调用了一个文件,并且我请求<cloudfront-distribution>.cloudfront.net/image.png,我会看到通过 Lambda@ 注入的响应标头Edge 函数。问题是当访问与 S3 存储桶中的文件不对应的路由时。如果我访问<cloudfront-distribution>.cloudfront.net/home-page,S3 将返回 404,Cloudfront 将处理 404 并根据错误页面配置进行操作,即响应使用 200 状态代码并渲染 index.html 文件。当发生这种情况时,我看不到通过 Lambda@Edge 函数注入的任何标头,而我的 Angular 应用程序的所有其他脚本文件都有标头。

如何使所有响应都通过 Lambda@Edge 函数?

amazon-s3 amazon-web-services amazon-cloudfront angular aws-lambda-edge

10
推荐指数
2
解决办法
3451
查看次数