为什么我的curl命令发送重置?

为什么我的curl命令发送重置?,curl,Curl,我正在尝试以下方法: $ curl -X GET "http://somewhere:14000/webhdfs/v1/user/frb?op=liststatus&user.name=frb" -H "X-Auth-Token: xxxxxxxx" curl: (56) Recv failure: Connection reset by peer 在第一阶段,我认为这是服务器的问题,但通过嗅探远程端的流量,我发现重置是由curl发送的!为什么? 一些有用的信息: $ curl --

我正在尝试以下方法:

$ curl -X GET "http://somewhere:14000/webhdfs/v1/user/frb?op=liststatus&user.name=frb" -H "X-Auth-Token: xxxxxxxx"
curl: (56) Recv failure: Connection reset by peer
在第一阶段,我认为这是服务器的问题,但通过嗅探远程端的流量,我发现重置是由
curl
发送的!为什么?

一些有用的信息:

$ curl --version
curl 7.29.0 (x86_64-redhat-linux-gnu) libcurl/7.29.0 NSS/3.19.1 Basic ECC zlib/1.2.7 libidn/1.28 libssh2/1.4.3
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp scp sftp smtp smtps telnet tftp 
Features: AsynchDNS GSS-Negotiate IDN IPv6 Largefile NTLM NTLM_WB SSL libz 

$ cat /etc/redhat-release 
CentOS Linux release 7.1.1503 (Core)

$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain DOCKER (0 references)
target     prot opt source               destination    
知道发生了什么吗?提前谢谢

编辑1

正如@nos所建议的,我将详细介绍
内容长度
标题和发送的实际有效负载长度:

有趣的是,似乎有什么不正确的地方

编辑2

打印整个Http响应。第一个数据块被定义为1829字节长(725十六进制),但计算有效负载(不包括最终的
\r\n
)时,它给出了1828字节长;通过添加
\r\n
,计数长度为1830字节。在这两种情况下,它似乎都不同于
content-length
标题中声明的长度

HTTP/1.1 200 OK
X-Powered-By: Express
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: HEAD, POST, GET, OPTIONS, DELETE
Access-Control-Allow-Headers: origin, content-type, X-Auth-Token, Tenant-ID, Authorization
server: Apache-Coyote/1.1
set-cookie: hadoop.auth="u=frb&p=frb&t=simple&e=1453410695487&s=YUl/hzzvVQ27/n4yeyi8ZL3r7K8="; Version=1; Path=/; Expires=Thu, 21-Jan-2016 21:11:35 GMT; HttpOnly
Content-Type: application/json; charset=utf-8
transfer-encoding: chunked
date: Thu, 21 Jan 2016 11:11:35 GMT
connection: close
Content-Length: 1829
ETag: W/"725-zwbM26xiKZvcP52NTX57Pg"

725
{"FileStatuses":{"FileStatus":[{"pathSuffix":".Trash","type":"DIRECTORY","length":0,"owner":"frb","group":"frb","permission":"700","accessTime":0,"modificationTime":1437696000073,"blockSize":0,"replication":0},{"pathSuffix":"def_serv","type":"DIRECTORY","length":0,"owner":"frb","group":"frb","permission":"755","accessTime":0,"modificationTime":1453133134503,"blockSize":0,"replication":0},{"pathSuffix":"hivetest","type":"DIRECTORY","length":0,"owner":"frb","group":"frb","permission":"755","accessTime":0,"modificationTime":1437667486016,"blockSize":0,"replication":0},{"pathSuffix":"mrtest","type":"DIRECTORY","length":0,"owner":"frb","group":"frb","permission":"755","accessTime":0,"modificationTime":1437647900960,"blockSize":0,"replication":0},{"pathSuffix":"mrtestoutput","type":"DIRECTORY","length":0,"owner":"frb","group":"frb","permission":"755","accessTime":0,"modificationTime":1437672805148,"blockSize":0,"replication":0},{"pathSuffix":"prueba1","type":"DIRECTORY","length":0,"owner":"frb","group":"frb","permission":"755","accessTime":0,"modificationTime":1453374021476,"blockSize":0,"replication":0},{"pathSuffix":"serv1","type":"DIRECTORY","length":0,"owner":"frb","group":"frb","permission":"755","accessTime":0,"modificationTime":1453301564320,"blockSize":0,"replication":0},{"pathSuffix":"test","type":"DIRECTORY","length":0,"owner":"frb","group":"frb","permission":"755","accessTime":0,"modificationTime":1453301887369,"blockSize":0,"replication":0},{"pathSuffix":"test2","type":"DIRECTORY","length":0,"owner":"frb","group":"frb","permission":"755","accessTime":0,"modificationTime":1453369175937,"blockSize":0,"replication":0},{"pathSuffix":"vaya","type":"DIRECTORY","length":0,"owner":"frb","group":"frb","permission":"755","accessTime":0,"modificationTime":1453369690198,"blockSize":0,"replication":0}]}}

0
编辑3

我试过使用另一台客户机。。。而且它有效!在这种情况下,服务器将继续发送
内容长度
传输编码=分块
,但
curl
认为这是正常的,并且不会发回重置<代码>卷曲版本不同:

$ curl --version
curl 7.43.0 (x86_64-apple-darwin14.0) libcurl/7.43.0 SecureTransport zlib/1.2.5
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp 
Features: AsynchDNS IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz UnixSockets


在发送FIN数据包之前,服务器是否发送了完整的响应?您需要通过查看响应中的Content Length标头与内容中的实际字节数进行比较来验证这一点。谢谢您的时间。请看我的编辑,我已经添加了关于
内容长度
标题的详细信息。好像有什么不对劲。。。我发现了其他相关的SOF问题,但不知道这是否是客户端(
curl
)发送重置的原因。
内容长度:1829\r\n
?嗯,我也看到了其他的
\r\n
s列表。您是否在Windows上运行此操作?@shellter:HTTP使用
\r\n
行分隔符作为标题字段。这在这里是正确的。@frb您计算过http正文实际上有1829个字节吗?curl给您一个错误,可能是因为主体的字节数少于服务器关闭连接之前的字节数,或者是因为响应包含一个内容长度头,但在响应主体中也使用了分块编码,而根据http协议,这种组合是不应该执行的(wireshark也在告诉你这一点)