curl版本差异引发Expect:100-continue请求头导致API空响应的问题咨询
curl版本差异引发Expect:100-continue请求头导致API空响应的问题咨询
最近我碰到了一个棘手的问题:我的PHP脚本通过curl和外部API交互,上周开始部分请求(比如图片上传、大数据集更新)会收到空响应,但实际上服务器已经完成了对应的操作。有意思的是,其他客户端发起相同请求却完全正常,所以我把问题锁定在了客户端这边。
首先我对比了两台客户端的curl版本:
- 出现空响应的客户端:
curl 7.64.0 - 请求正常的客户端:
curl 7.81.0
更奇怪的是,curl 7.64.0之前一直用得好好的,最近才突然出问题。于是我抓包对比了两个curl发送的HTTP请求头,发现curl 7.64.0会自动在请求头里加上Expect: 100-continue,而curl 7.81.0不会带这个头。
我试着做了个临时修复:在curl的HTTP头配置里把Expect字段设为空字符串(Expect:),现在请求又恢复正常了。
不过我还有两个疑问想请教社区的大佬们:
- 为什么
curl 7.64.0会自动添加Expect: 100-continue头,而curl 7.81.0不会? - API服务器收到带这个头的请求后返回空响应,这种行为符合规范吗?
备注:内容来源于stack exchange,提问作者TmCrafz
相关产品推荐
相关产品推荐

