S3 静态文件上的 HTTP 400
HTTP 400 on S3 static file
我们在获取一些静态文件时发现(在我们的错误跟踪工具中)一些 http 400 问题。
另外,在我们的 API 网关中有日志表明它将请求重定向到响应 400 的 S3。
这不是我们的 CDN,也不是我们的 API 网关。
为什么 S3 会响应 400 静态文件?
到目前为止,我们无法在任何地方找到任何关于它的确切信息,但一些关于 400 的一般资源指出了某些 HTTP header:
的问题
- Malformed request syntax
- If-Modified-Since
- Amazon ALB 400 Request header or cookie too large
- Kong 400 Request header or cookie too large
由于我们无法手动重现对我们系统的访问,我们开始尝试使用 Postman headers 获取带有一些意外的静态文件。
我们终于可以通过发送大量 Cookie 来快速重现问题了。
我们的假设是,Amazon S3 的静态网站可能有一些配置会阻止具有特定长度 headers/cookies 的请求。
一旦我们找不到在 S3 上配置它的方法,我们就在 API 网关中添加了一个插件,当它是静态文件请求时,它会在重定向之前删除 cookie到 S3(不需要)。
在那次更改之后,我们监控了我们的错误跟踪工具,静态网站上的 http 400 出现次数下降到 0。
我们在获取一些静态文件时发现(在我们的错误跟踪工具中)一些 http 400 问题。
另外,在我们的 API 网关中有日志表明它将请求重定向到响应 400 的 S3。
这不是我们的 CDN,也不是我们的 API 网关。
为什么 S3 会响应 400 静态文件?
到目前为止,我们无法在任何地方找到任何关于它的确切信息,但一些关于 400 的一般资源指出了某些 HTTP header:
的问题- Malformed request syntax
- If-Modified-Since
- Amazon ALB 400 Request header or cookie too large
- Kong 400 Request header or cookie too large
由于我们无法手动重现对我们系统的访问,我们开始尝试使用 Postman headers 获取带有一些意外的静态文件。
我们终于可以通过发送大量 Cookie 来快速重现问题了。
我们的假设是,Amazon S3 的静态网站可能有一些配置会阻止具有特定长度 headers/cookies 的请求。
一旦我们找不到在 S3 上配置它的方法,我们就在 API 网关中添加了一个插件,当它是静态文件请求时,它会在重定向之前删除 cookie到 S3(不需要)。
在那次更改之后,我们监控了我们的错误跟踪工具,静态网站上的 http 400 出现次数下降到 0。