更改 CloudFront 返回的响应代码
您可以配置 CloudFront 向查看器返回的 HTTP 状态代码,使其与 CloudFront 从源接收的状态代码不相同。例如,如果源向 CloudFront 返回 500 状态代码,您可能希望 CloudFront 向查看器返回自定义错误页面和 200 状态代码(正常)。出于多种原因,您可能希望 CloudFront 向查看器返回不同于源返回到 CloudFront 的状态代码:
-
一些互联网设备(例如,一些防火墙和企业代理)会拦截 HTTP 4xx 和 5xx 状态代码,防止响应返回到查看器。在这种情况下,如果您替换
200
,就不会截获响应。 -
如果您不希望区分不同的客户端错误或服务器错误,可以将 CloudFront 为所有 4xx 或 5xx 状态代码返回的值指定为
400
或500
。 -
您可能希望返回
200
状态代码(正常)和静态网站,确保客户不知道网站宕机。
如果您启用 CloudFront 标准日志并且将 CloudFront 配置为更改响应中的 HTTP 状态代码,则标准日志中 sc-status
列的值将包含您指定的状态代码。但是,x-edge-result-type
列的值不受影响。该值包含源响应的结果类型。例如,假设您将 CloudFront 配置为在源将 200
(未找到)返回到 CloudFront 时将 404
的状态代码返回到查看器。当源使用 404
状态代码响应请求时,日志中 sc-status
列的值将为 200
,但 x-edge-result-type
列的值将为 Error
。
您可以将 CloudFront 配置为随自定义错误页面返回以下任意 HTTP 状态代码:
-
200
-
400、403、404、405、414、416
-
500、501、502、503、504