当响应代码是设置了自定义错误响应的错误时,CloudFront是否会删除Origin响应正文?

时间:2018-01-02 06:43:38

标签: amazon-web-services amazon-cloudfront

我将在前言中说,在我的情况下答案似乎是没有,但是我可能错误配置了我的设置,并且在文档中的任何地方都找不到这个,所以我会想知道它是如何工作的。

定义自定义错误响应时,从Origin选择错误代码,返回要返回的响应页面,并使用错误代码替换原点错误代码。

通常这可以正常工作 - 例如我设置CloudFront,当Origin提供403时,返回带有代码404的“error.html”。当探测链接时,我知道应该返回403,我收到“错误。 HTML“与404。 不幸的是,似乎当Origin提供它自己的身体时(我看到这种情况发生在JSON和HTML页面上),CloudFront只替换了标题 - 错误代码正确地从403切换到404,但正文是由Origin发送的 - 未提供“error.html”。

这是预期的行为吗?文档是否在任何地方都提到了这一点?

1 个答案:

答案 0 :(得分:1)

您所描述的内容并非预期。

配置自定义错误页面和自定义响应代码应将整个响应替换为自定义响应 - 标头和正文 - 以及自定义状态代码 - 包括 none < / em>原始响应标头或正文。

如果发生第二次错误 - 也就是说,CloudFront在实际获取自定义错误文档期间遇到错误 - 代码和正文都将是第二次请求期间提供的原始错误。

https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/custom-error-pages.html

您可以检查响应标头,尤其是Age标头,以确认您没有获得比预期更早的缓存响应。更改自定义错误页面配置不会使任何已缓存的错误响应无效。

使用原始日志交叉检查CloudFront日志,以验证您所看到的内容确实存在。

另请注意,上述所有内容均不适用于来自&#34;隐藏&#34;的错误响应。 CloudFront分配与边缘优化的API网关端点相关联,也不与Lambda @ Edge自定义错误响应相关联。