badbadguyisland

📅 2026/6/30 2:23:29
badbadguyisland
问题描述同一份libcurl post请求代码在ubuntu下可以正常执行而在windows下curl_easy_perform却返回 52curl_easy_strerror(52)返回 Server returned nothing (no headers, no data)原因在windows下libcurl自动添加了一个请求头Expect: 100-continueHTTP/1.1 协议里设计 100 (Continue) HTTP 状态码的的目的是在客户端发送 Request Message 之前HTTP/1.1 协议允许客户端先判定服务器是否愿意接受客户端发来的消息主体基于 Request Headers。即 客户端 在 Post较大数据到服务端之前允许双方“握手”如果匹配上了Client 才开始发送较大数据。这么做的原因是如果客户端直接发送请求数据但是服务器又将该请求拒绝的话这种行为将带来很大的资源开销。如果 client 预期等待“100-continue”的应答那么它发的请求必须包含一个 Expect: 100-continue 的头域libcurl自动添加的请求头Expect: 100-continue会导致请求头和请求体分开两次发送。但并不是所有的 Server 都会正确实现100-continue协议。解决办法