【发布时间】:2018-03-13 21:45:01
【问题描述】:
使用以下代码通过 TLS v1.0 发送请求。
$url = "https://example.com";
$input_segment = "";
$data = array('InputSegments'=>$input_segment, 'cmdSubmit'=>'Submit');
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_CIPHER_LIST, 'TLSv1');
curl_setopt($ch, CURLOPT_PORT, "443");
curl_setopt($ch, CURLOPT_SSLVERSION, 4);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/x-www-form-urlencoded'
));
$response = curl_exec($ch);
$info = curl_getinfo($ch);
$err_no = curl_errno($ch);
$err = curl_error($ch);
curl_close($ch);
var_dump($response);
错误
错误 #:SSL 读取:错误:00000000:lib(0):func(0):reason(0), errno 104
看起来仍在使用 SSL。如何在 PHP 中通过 TLSv1.0 发送 curl 请求?
【问题讨论】:
-
LMGTFY: github.com/curl/curl/issues/1689
-
尝试使用常量
CURL_SSLVERSION_TLSv1_0而不是 4。同时设置 CURLOPT_USE_SSL 以强制使用请求的 TLS(或 SSL),否则失败。 -
@UnamataSanatarai:服务器问题是指第三方方面的问题还是我需要从我这边解决的问题?
-
@LordNeo:用这两行更新了请求:
curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_0); curl_setopt($ch, CURLOPT_USE_SSL, "TLS");仍然是相同的结果 -
可能是你的服务器,也可能是对方。正如 github 上的票所说 - 不太确定。