You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何发送不带Content-Length头的CURL请求?

解决CURL请求中自动添加Content-Length头的问题

你尝试通过CURL发送PUT请求时,希望完全不携带Content-Length头,但无论使用参数还是手动设置,服务器仍能接收到该头。你试过的两种方法:

  • 方法1:使用--ignore-content-length参数,服务器仍获取到实际的Content-Length
    curl --ignore-content-length --request PUT somehttps-domain/ignored-content-length.txt --upload-file ignored-content-length.txt -kv
    
  • 方法2:手动设置空的Content-Length头(注意字段名拼写错误:Content-Lenght应为Content-Length),服务器收到的Content-Length为0
    curl --request PUT somehttps-domain/ignored-content-length.txt --upload-file ignored-content-length.txt --header 'Content-Length:' -kv
    

核心原因

HTTP/1.1规范中,非分块编码的请求必须携带Content-Length头(HEAD请求除外),CURL默认会根据请求体自动计算并添加该头,这是符合协议规范的行为。

解决建议

  1. 强制使用分块传输编码
    分块传输不需要Content-Length头,通过--transfer-encoding chunked参数让CURL发送Transfer-Encoding: chunked头,替代Content-Length:

    curl --request PUT somehttps-domain/ignored-content-length.txt --upload-file ignored-content-length.txt --transfer-encoding chunked -kv
    

    此时服务器会通过分块方式接收请求体,不会收到Content-Length头。

  2. 切换到HTTP/2协议
    HTTP/2不依赖Content-Length头,而是通过帧机制传输数据。如果服务器支持HTTP/2,添加--http2参数即可:

    curl --request PUT somehttps-domain/ignored-content-length.txt --upload-file ignored-content-length.txt --http2 -kv
    
  3. 避免无效的头设置方式
    手动设置空值的Content-Length头只会让服务器收到值为0的头,无法完全移除该字段,这种方式不可行。

内容的提问来源于stack exchange,提问作者TomJava

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 01:57:45