问题描述
我有一个Angular应用程序的静态文件通过Cloudfront放在S3存储桶中。我的Cloudfront发行版中设置了错误页面,因此仍呈现Angular的index.html。这意味着,如果我请求<cloudfront-distribution>.cloudfront.net/home-page
,而不是说它没有在S3存储桶上找到名为home-page
的文件,它仍将渲染angular应用程序,angular应用程序将处理该{{ 1}}路线。
我需要在应用服务器上包括一些安全标头,因此我设置了Lambda @ Edge函数以在查看器响应事件中注入这些标头(如此处https://aws.amazon.com/blogs/networking-and-content-delivery/adding-http-security-headers-using-lambdaedge-and-amazon-cloudfront/所述)。
Lambda @ Edge正在处理实际上与S3存储桶中的文件相对应的路由(如果我在S3存储桶的根文件夹中有一个名为/home-page
的文件,并且我请求image.png
,我看到了通过Lambda @ Edge函数注入的响应标头。问题是访问与S3存储桶中的文件不对应的路由时,如果我访问<cloudfront-distribution>.cloudfront.net/image.png
,S3将返回404 ,Cloudfront将处理404并根据错误页面配置进行相应的操作,即以200状态代码响应并呈现index.html文件。当发生这种情况时,我看不到我通过Lambda注入的任何标头@Edge函数,而我的Angular应用程序的所有其他脚本文件都有标题。
如何通过Lambda @ Edge函数使所有响应通过?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)