POST成功后curl不会终止

时间:2017-08-17 14:27:30

标签: bash curl

我创建了一些curl命令将POST发送到我的服务器,我在那里监听该端口的输入以触发其他操作。该命令如下(刚刚屏蔽了URL):

curl -v -H "Content-Type: application/json" -X POST -d "{\"Location\":\"Some Name\",\"Value\":\"40%\"}" http://example.com:8885/

我从curl得到以下输出:

  

关于connect()到example.com端口8885(#0)

     

尝试使用5.147.XXX.XXX ......

     

连接到example.com(5.147.XXX.XXX)端口8885(#0)

     

POST / HTTP / 1.1

     

User-Agent:curl / 7.29.0

     

主持人:example.com:8885

     

接受: /

     

Content-Type:application / json

     

内容长度:40

     

上传已完全发送:40个字节中的40个

然而,在卷曲后没有关闭连接。难道我做错了什么?同样在服务器上我只有在按下ctrl + c时才会收到POST。

2 个答案:

答案 0 :(得分:5)

它坐在那里等待正确的HTTP响应,在收到它之后它会干净地退出。

最小的HTTP / 1.1响应可能类似于:

HTTP/1.1 200 OK
Content-Length: 0

...在最后一个标题之后需要一个额外的CRLF来表示标题的结尾。

答案 1 :(得分:3)

我对此有点生疏,但根据section 6.1 of RFC7230,您可能还需要添加Connection: close标头。引用段落的一部分:

  

"关闭"连接选项定义为发送者发信号   该连接将在完成后关闭   响应。例如,

 Connection: close
     请求或响应头字段中的

表示   发送者将在当前
之后关闭连接   请求/响应已完成(第6.6节)。

如果它能解决您的问题,请告诉我们: - )