http post curl Expect:100-continue

本文探讨了在公司网络环境下遇到的HTTP请求错误码417问题,发现可能与POST数据大小超过1024字节有关。通过分析curl请求行为和抓包数据,提出了直接发送请求而不询问的方式解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开发中遇到一个不确定原因的问题,http请求返回错误码 417。

期间换了移动2G,4G网络,vpn,没发现这个问题,单单公司网络有这个问题。再查原因。


搜索问题,指向到http post 请求时,字符串长度问题,临界值1024字节。

试验中发现,1024临界值不是很确定,比如小于1024字节时也不通过。(前端算的字节)


找到下面一些提示:

使用curl POST数据时,如果POST的数据大于1024字节,curl并不会直接就发起POST请求。而是会分两步。

1.发送一个请求,header中包含一个Expect:100-continue,询问Server是否愿意接受数据。

2.接受到Server返回的100-continue回应后,才把数据POST到Server。


抓包数据:


目前解决方法:给http请求替换Header ,不在询问,直接发送请求。当然确保服务器可以接受长数据。

request = network.createHTTPRequest(function(event)

end,url,"POST")

request:addRequestHeader("Expect:")

request:addPOSTValue("","")

request:start()


./http_auth == Info: Trying 192.168.1.31... == Info: TCP_NODELAY set == Info: Connected to 192.168.1.31 (192.168.1.31) port 80 (#0) == Info: WARNING: Using weak random seed >> Header Out: POST /login.cgi HTTP/1.1 Host: 192.168.1.31 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7 Accept-Language: zh-TW,zh;q=0.9,en-US;q=0.8,en;q=0.7 Cache-Control: max-age=0 Connection: keep-alive Origin: http://192.168.1.31 Referer: http://192.168.1.31/ Upgrade-Insecure-Requests: 1 User-Agent: Chrome/123.0.0.0 Safari/537.36 Content-Length: 252 Expect: 100-continue Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryCsh0BrBqA4TyiE23; boundary=------------------------d16435452eaccacd == Info: Done waiting for 100-continue >> Data Out: --------------------------d16435452eaccacd Content-Disposition: form-data; name="username" config --------------------------d16435452eaccacd Content-Disposition: form-data; name="password" config --------------------------d16435452eaccacd-- << Header In: HTTP/1.1 200 OK << Header In: pires: Thu, 01 Jan 1970 00:00:00 GMT == Info: no chunk, no close, no size. Assume close to signal end << Header In: <!DOCTYPE html><html><head><!-- HTML meta refresh URL redirection --><meta http-equiv="refresh" content="0; url=/index.shtml"></head><body><p>Loading page, please wait: <a href="/index.shtml">Link to page</a></p></body></html><< Data In: <!DOCTYPE html><html><head><!-- HTML meta refresh URL redirection --><meta http-equiv="refresh" content="0; url=/index.shtml"></head><body><p>Loading page, please wait: <a href="/index.shtml">Link to page</a></p></body></html> == Info: Failed writing body (3069571632 != 226) == Info: Closing connection 0 curl_easy_perform() failed: Failed writing received data to disk/application write_callback:<!DOCTYPE html><html><head><!-- HTML meta refresh URL redirection --><meta http-equiv="refresh" content="0; url=/index.shtml"></head><body><p>Loading page, please wait: <a href="/index.shtml">Link to page</a></p></body></html>[makelink]/tmp/so/http-hzm
最新发布
05-30
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值