现象:
在使用libcurl库开发的程序发送请求,响应时间长达1s左右,结果对方反馈他们压测的结果是 2~3ms 就能返回结果
原因
libcurl 当 POST的数据大于1024字节的时候,http默认添加请求头Expect: 100-continue,
- 先追加一个Expect: 100-continue请求头信息,发送这个不包含 POST 数据的请求;
- 如果服务器返回的响应头信息中包含Expect: 100-continue,则表示 Server 愿意接受数据,这时才 POST 真正数据给 Server;
解决办法
添加一个空的请求头,把 expect: 100-continue 请求头干掉
headers = curl_slist_append(headers, "Expect:")