libcurl在发起一个post请求时,如果body大于1K,则会先发一个Expect头问问服务端是否支持接收数据。。。然后,服务端说可以的话(httpcode:100 continue),libcurl会发起第二次post请求,此次会携带实际body。
这个设计初衷是为了避免浪费,但是,一般在内网的服务用这个就是加倍了延迟。或者在明确知道对方服务器支持接收数据的话。。。
解决办法就是在post请求的时候指定Expect头为空字符串。
如在PHP中则为:
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Expect:']);