Content-Length
Content-Length
Traefik 作为流式代理(streaming proxy)运行。默认情况下,它在将数据块传递给后端或客户端时,针对每个数据块检查 Content-Length 头。
这种实时检查可阻止被截断或过长的流,而无需持有整个消息。
如果你需要 Traefik 在任何数据继续传递之前读取并验证完整 body,请添加 buffering 中间件:
yaml
http:
middlewares:
buffer-and-validate:
buffering: {}启用 buffering 后,Traefik 将:
- 将整个请求或响应读取到内存中。
- 将实际字节数与
Content-Length头进行比较。 - 如果计数不匹配,则拒绝该消息。
警告
Buffering 会增加开销。每个请求和响应在转发前都会被完整保留,这可能会增加内存使用和延迟。当严格的内容验证对你的安全态势至关重要时使用它。