当前位置:  开发笔记 > 编程语言 > 正文

无法使用cURL连接到HTTPS站点.返回0长度内容.我能做什么?

如何解决《无法使用cURL连接到HTTPS站点.返回0长度内容.我能做什么?》经验,为你挑选了4个好方法。

我有一个使用cURL(最新版本)连接到安全网关进行支付的站点.

问题是cURL总是返回0长度的内容.我只收到标题.只有当我设置cURL返回标题时.我有以下标志.

curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_URL, $gatewayURI);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_POST, 1);

返回的标头是

HTTP/1.1 100 Continue

HTTP/1.1 200 OK
Date: Tue, 25 Nov 2008 01:08:34 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
Content-Length: 0
Content-Type: text/html
Set-Cookie: ASPSESSIONIDxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx; path=/
Cache-control: private

我也试过cURL'ing不同的网站,他们返回内容很好.我认为这个问题可能与https连接有关.

我和公司谈过,他们没有帮助.

有没有其他人遇到过这个错误并知道解决方法?我应该抛弃cURL并尝试使用fsockopen()

谢谢.:)



1> SchizoDuckie..:

我今天遇到了同样的问题.Curl附带了一个过时的文件来验证来自的HTTPS证书.

得到新的:

http://curl.haxx.se/ca/cacert.pem

将其保存到您网站上的某个目录中

并添加

curl_setopt ($curl_ch, CURLOPT_CAINFO, dirname(__FILE__)."/cacert.pem"); 

对每一个要求:-)

IGNORE关于禁用CURLOPT_VERIFYPEER和CURLOPT_VERIFYHOST的任何愚蠢的评论!! 这使得你的代码在中间攻击中容易受到攻击!

2016年12月编辑:

使用下面提到的Jasen方法正确解决这个问题.

curl.cainfo=/etc/ssl/certs/ca-certificates.crt你php.ini

2017年10月编辑:

现在有一个composer包可以帮助您管理ca证书,这样如果您的cacert.pem由于撤销证书而变得过时,您就不会受到攻击.

https://github.com/paragonie/certainty - >composer require paragonie/certainty:dev-master


5年后,仍然相关.这为我修好了!(如果有帮助的话,在Windows 7 32位上运行WAMPServer 2.4 ...)
2014年为我工作!
禁用您自己的veryfipeer和verifyhost调用.你在帖子的示例代码中有它们.他们需要启用!

2> too much php..:

您还应该尝试检查curl_error()中的错误消息.在每个curl_*函数之后,您可能需要执行一次此操作.

http://www.php.net/curl_error



3> mixdev..:

注意:这绝对不是生产用途.如果您想快速调试,这可能很有用.否则,请使用@ SchizoDuckie的答案.

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);     
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); 

只需添加它们.有用.


这对我有用.我不明白@mixdev得到的downvotes.

4> Cobra_Fast..:

只是有一个非常相似的问题,并通过添加解决它

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

显然我正在抓取的网站重定向到另一个位置,并且php-curl默认不遵循重定向.

推荐阅读
TXCWB_523
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有