如何使用curl发送携带请求体的HEAD请求
实现带请求体的HEAD请求方法
可用命令
直接执行以下命令即可:
curl -X HEAD -d "test" --head http://localhost:8080
也可以用完整参数写法,可读性更高:
curl --request HEAD --data "test" --head --no-buffer http://localhost:8080
错误原因说明
- 首次执行
curl -X HEAD http://localhost:8080 -d "test"报错transfer closed with 11 bytes remaining to read,是因为curl默认会尝试读取和响应头Content-Length字段值匹配的响应体内容,但HEAD请求的响应本身不包含响应体,curl会误判为传输中断。添加--head/-I参数后,curl会主动忽略响应体,不会触发该类报错。 - 第二次执行
curl -I http://localhost:8080 -d "test"报错方法冲突,是因为curl默认会给带-d/--data参数的请求自动设置为POST方法,和-I对应的HEAD方法产生冲突。显式添加-X HEAD/--request HEAD可以强制指定请求方法优先级,覆盖-d的默认POST逻辑。
注意:虽然RFC规范没有禁止HEAD请求携带请求体,但绝大多数Web服务、反向代理默认会直接忽略HEAD请求的请求体,部分服务甚至会直接返回400错误,生产环境使用前请确认服务端兼容该场景。
内容的提问来源于stack exchange,提问作者yyykkkyyy
相关产品推荐
相关产品推荐

