libcurl在发起body大于1K的请求被分两次发往服务端的问题


libcurl在发起一个post请求时,如果body大于1K,则会先发一个Expect头问问服务端是否支持接收数据。。。然后,服务端说可以的话(httpcode:100 continue),libcurl会发起第二次post请求,此次会携带实际body。

这个设计初衷是为了避免浪费,但是,一般在内网的服务用这个就是加倍了延迟。或者在明确知道对方服务器支持接收数据的话。。。

解决办法就是在post请求的时候指定Expect头为空字符串。

如在PHP中则为:

curl_setopt($ch, CURLOPT_HTTPHEADER, ['Expect:']);

 


发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注