当使用curl从URL检索数据时,我有时(在80%的情况下)得到
错误18:传输关闭,剩余未完成的读取数据
然后丢失部分返回的数据.奇怪的是,这并不会发生在CURLOPT_RETURNTRANSFER设置为false,那就是curl_exec函数不返回数据,而是直接显示的内容.
可能是什么问题呢?我可以设置一些选项来避免这种行为吗?
Dan*_*erg 43
错误字符串非常简单地类似于libcurl所看到的:因为它正在接收一个分块编码流,所以它知道何时有一个块中有数据要接收.当连接关闭时,libcurl知道最后收到的块是不完整的.然后你得到这个错误代码.
你可以做任何事情来避免这个错误与请求未经修改,但你可以尝试通过发出HTTP 1.0请求来解决它(因为那时不会发生分块编码)但事实是这很可能是一个缺陷以某种方式在服务器或网络/设置中.
Chr*_*blé 31
我敢打赌,这与对等方发送的错误Content-Length标头有关.我的建议是让curl自己设定长度.
在使用 Guzzle 的过程中也看到这个错误。以下标题为我修复了它:
'headers' => [
'accept-encoding' => 'gzip, deflate',
],
Run Code Online (Sandbox Code Playgroud)
我向邮递员发出了请求,邮递员给了我完整的回复,没有错误。然后我开始添加 Postman 发送到 Guzzle 请求的标头,这就是修复它的标头。
我遇到了同样的问题,但设法通过抑制cURL通常发送的'Expect:100-continue'标头来修复它(以下是PHP代码,但应该与其他cURL API类似):
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Expect:'));
Run Code Online (Sandbox Code Playgroud)
顺便说一句,我正在向JDK 6 REST中包含的HTTP服务器发送调用,这会产生各种问题.在这种情况下,它首先发送100响应,然后对某些请求不会正确发送后续200响应.
小智 5
遇到类似的问题,我的服务器位于nginx后面。Web 服务器(Python Flask)日志中没有错误,但 nginx 日志中有一些错误消息。
[crit] 31054#31054: *269464 open()“/var/cache/nginx/proxy_temp/3/45/0000000453”在读取上游时失败(13:权限被拒绝)
我通过更正目录的权限解决了这个问题:
/var/cache/nginx
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
107659 次 |
| 最近记录: |