我将ECS用于502应用程序,并为代码404和502设置了错误页定义。我的当前设置返回一个静态maintenance.html文件(托管在S3上),并返回代码200。我必须返回200,否则Outlook (它是我的应用程序)将不会呈现返回的html,而是显示一个丑陋的错误页面。我遇到的问题是,我的客户端应用程序到我的服务器的API调用可能也会返回404。使用当前的设置,CloudFront将截取此回复,并使用代码200返回maintenance.html。所以现在我的应用程序不知道出了什么问题,后来在解析回复时失败了。
是否有一种方法来定义错误页以只处理特定的请求?对于我的用法,我希望它们只处理对我的/static/index.html文件的调用。如果服务器中实际上缺少了其他文件/API调用,我希望我的客户端获得404,这样它就可以正确地处理它。
发布于 2018-06-22 20:29:19
因此,要回答您的问题,根据我阅读的文档,目前无法从cloudfront错误页面Config进行此操作。
然而,我们也遇到了类似的问题,但是在我们的示例中,API调用返回了一个带有s3自定义错误html的500个错误,而不是我所期望的仅针对API调用的实际服务器错误。
在这种情况下,我们最终所做的是在后端为500个错误设置一个处理程序,如果请求Url具有API调用模式(我们使用了http错误代码406),则返回在cloudfront错误页面中没有使用的响应代码(我们使用了http Error code 406 ),然后处理程序将使用406响应代码和整个错误来响应,而不是使用s3响应html,只有在通过api url模式失败时才使用。我知道这并不能以您想要的方式解决问题,但在cloudfront允许基于路径模式的自定义错误响应之前,您可能会发现它很有帮助。
https://stackoverflow.com/questions/43201083
复制相似问题