场景复现:

使用curl模拟登陆,提交表单参数比较多,其中有几个参数值较大,curl_exec一直为空值,排查了挺久才意识到,有可能是post数据过大,虽然可以和对方服务器先进行三次握手,成功连接,但是并不会马上POST数据过去,而是会先向对方服务器发送包含一个 “Expect: 100-continue” 头域,询问服务器是否接受数据传递。而对方服务器没能给我们一个应答消息,所以才会出现上面的连接对方服务器后又断开而没有POST数据的情况。

解决方法:

curl_setopt($ch, CURLOPT_HTTPHEADER, array(‘Expect:’));