Content-Length
Traefik 以流式代理方式工作。默认情况下,将数据传递给后端或客户端时,它会根据 Content-Length 消息头逐块检查数据。
这种实时检查无需持有整条消息,就能阻止被截断或超长的数据流。
如果需要 Traefik 在转发任何数据之前先读取并验证完整消息体,请添加缓冲中间件:
http:
middlewares:
buffer-and-validate:
buffering: {}
启用缓冲后,Traefik 会:
- 将整个请求或响应读入内存。
- 比较实际字节数与
Content-Length消息头声明的长度。 - 如果长度不一致,则拒绝该消息。
警告
缓冲会带来额外开销。每个请求和响应都要在完整接收后才会转发,这可能增加内存使用量和延迟。 请在严格的内容验证对于安全防护至关重要时使用它。