libcurl post哀求报错:Server returned nothing (no headers, no data)

[复制链接]
发表于 2026-3-5 08:29:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
题目形貌:

同一份libcurl post哀求代码,在ubuntu下可以正常实行,而在windows下,curl_easy_perform却返回 52
curl_easy_strerror(52)返回: Server returned nothing (no headers, no data)
缘故起因:

在windows下,libcurl主动添加了一个哀求头 Expect: 100-continue
HTTP/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 协议。
办理办法:

在libcurl的post哀求代码中删除哀求头 Expec 即可,确保哀求头和哀求体一起发送
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表