当我们使用 linux 的curl命令,或是调用libcurl接口,由客户端向服务器端发送 POST 消息的时候,很有可能忽视一个问题就是消息体长度问题,作为网络通信,这个问题是需要我们所了解的,下面就详细介绍一下。
当消息体的长度超过1024字节时,客户端并不会直接将POST请求的消息发送给服务器端,而是会分两步走,
Client:发送POST 请求,header中默认带有 {"Expect":"100-continue"}。
Server: 接收client的post请求,并决定是否愿意接受客户端的请求(基于请求的头部)。如果接受,那么会返回HTTP 100-continue状态码。
Client:如果接收到HTTP 100-continue状态码,那么继续发送消息体。
当然了,如果不想让客户端分两步走发送完消息的话,在第一次POST的时候,header中加入{"Expect":""} 就可以一次行的将长消息发送给服务器端。
curl命令使用方法:
curl -i -H 'Content-type':'application/json' -H 'Expect':'' -X POST -d 'xxxxxxxxx' "http://xxxxxx"
其中重要的参数:
-i : 表示输出包括协议头信息
-H :自定义头部信息传递给服务器,可以加多个-H,此处-H 'Expect':'' 表示不用默认100-continue,对于消息题内容超过1024字节也一次传输完成。
-X :表示http请求方式。此处是POST方式。
-d :以POST方式传输命令,跟着具体传输内容。
最后一项是url.
参考文献:
https://www.w3.org/Protocols/rfc2616/rfc2616-sec8.html#sec8.2.3