安装完探针,不显示数据,返回错误日志,服务器返回 417


#1

安装完探针,不显示数据,返回错误日志,服务器返回 417

如下图:


这个问题源自 HTTP 1.1 协议的一个规范

在使用 CURL 做 POST 的时候, 当要 POST 的数据大于1024 字节的时候, CURL 并不会直接就发起 POST 请求, 而是会分为两步:
1. 发送一个请求, 包含一个 Expect: 100-continue, 询问 Server 使用愿意接受数据
2. 接收到 Server 返回的100-Continue应答以后, 才把数据 POST 给 Server
这是 Libcurl 的行为.

具体的 RFC 相关描述: http://www.w3.org/Protocols/rfc2616/rfc2616-sec8.html#sec8.2.3
于是,这样就有了一个问题, 并不是所有的 Server 都会正确应答 100-Continue,
比如 Lighttpd, 就会返回 417 “Expectation Failed”, 则会造成出错

解决办法:
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:'));