网站首页 全球最实用的IT互联网站!

人工智能P2P分享Wind搜索发布信息网站地图标签大全

当前位置:诺佳网 > 软件工程 > 后端开发 > C++ >

libcurl post请求报错:Server returned nothing (no header

时间:2026-03-05 10:00

人气:

作者:admin

标签:

导读:问题描述: 同一份libcurl post请求代码,在ubuntu下可以正常执行,而在windows下,curl_easy_perform却返回 52 curl_easy_strerror(52)返回: Server returned nothing (no headers, no data) 原因...

同一份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 即可,确保请求头和请求体一起发送

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
  • 指针空置类型-nullptr

    指针空置类型-nullptr

    先看一段代码: #include lt;iostreamgt; using namespace std; void func(char* p) { cout lt;lt; q...
  • 基于范围的for循环

    基于范围的for循环

    c11基于范围的for循环,语法: for (Type declaration : expression) { // 循环体 } 在上面的...
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信