Skip to content

Content-Length

Content-Length

Traefik 作为流式代理(streaming proxy)运行。默认情况下,它在将数据块传递给后端或客户端时,针对每个数据块检查 Content-Length 头。

这种实时检查可阻止被截断或过长的流,而无需持有整个消息。

如果你需要 Traefik 在任何数据继续传递之前读取并验证完整 body,请添加 buffering 中间件

yaml
http:
  middlewares:
    buffer-and-validate:
      buffering: {}

启用 buffering 后,Traefik 将:

  • 将整个请求或响应读取到内存中。
  • 将实际字节数与 Content-Length 头进行比较。
  • 如果计数不匹配,则拒绝该消息。

警告

Buffering 会增加开销。每个请求和响应在转发前都会被完整保留,这可能会增加内存使用和延迟。当严格的内容验证对你的安全态势至关重要时使用它。

基于 MIT 协议发布