如果设置了内容长度,PHP cURL将返回错误52

如果设置了内容长度,PHP cURL将返回错误52,php,curl,content-length,Php,Curl,Content Length,我试图通过php cURL在远程网站上发布表单 这是我的cURL配置(我在注释中添加了一些解释): 执行这样的配置后,我收到这样的响应: string(610) "HTTP/1.1 302 Found Location: http://XXX Vary: Accept-Encoding Content-type: text/html; charset=utf-8 Server: DWS Content-Length: 15536 Accept-Ranges: bytes Date: Wed, 1

我试图通过php cURL在远程网站上发布表单

这是我的cURL配置(我在注释中添加了一些解释):

执行这样的配置后,我收到这样的响应:

string(610) "HTTP/1.1 302 Found
Location: http://XXX
Vary: Accept-Encoding
Content-type: text/html; charset=utf-8
Server: DWS
Content-Length: 15536
Accept-Ranges: bytes
Date: Wed, 17 Dec 2014 10:59:35 GMT
X-Varnish: 2567206754
Age: 0
Via: 1.1 varnish
Connection: keep-alive

HTTP/1.1 411 Length Required
Content-Type: text/html
Server: DWS
Content-Length: 357
Accept-Ranges: bytes
Date: Wed, 17 Dec 2014 10:59:35 GMT
X-Varnish: 2567207187
Age: 0
Via: 1.1 varnish
Connection: keep-alive
我尝试向cURL配置添加一个内容长度标题:

'Content-Length: ' . strlen($postData)
但cURL失败,出现错误52(服务器的空回复)。 为了确保我指定的内容长度实际上是正确的,我尝试向CURLOPT_POSTFIELDS添加一个custom字符串(比如'foo=bar'),并将内容长度设置为7,但结果是相同的

我还试图隐藏整个代码并使用Zend 2 Http客户端,但没有成功。 我想我已经阅读了所有其他关于curl52错误的帖子,但是没有一篇与Content-Length标题有任何共同之处,所以我希望这里的人可以帮助我


如果您需要我的部分提供更多信息,请告诉我。

$action
变量中指定的URL的
POST
请求返回HTTP 302重定向,其中CURL将使用
GET
发送下一个请求,请参阅此处的第2段:

您已经使用了
CURLOPT\u CUSTOMREQUEST
来解决这个问题,但它也需要
CURLOPT\u POSTREDIR
,如这里的字符串部分所述:

您不应该显式地设置
内容长度
,而应该使用CURL句柄


或者,您可以手动“跟踪”
位置
标题,并在
$action
变量中使用该标题中的URL(首先尝试测试可能会很有用)。

感谢您的回答,它成功了!我仍然无法实现我的目标,但我认为这与这条线索无关
'Content-Length: ' . strlen($postData)