You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Curl连接第三方网站超时求助(Postman正常服务器报错)

问题排查与解决建议

一、优先排查网络连通性限制

既然Postman能正常访问,但三台服务器均出现超时,先从网络层面确认问题:

  • 在服务器执行 ping mythirdpartydomain.com,检查域名是否能正常解析到IP,是否存在严重丢包
  • 用 telnet mythirdpartydomain.com 443 或 nc -zv mythirdpartydomain.com 443 测试443端口连通性:
    • 如果提示无法连接,要么是你的服务器出站安全组/防火墙禁止了443端口请求,要么是目标服务器的防火墙/IP白名单拉黑了你的服务器IP段(三台服务器都出问题,大概率是后者)
  • 测试服务器访问其他HTTPS站点(比如 curl https://baidu.com),确认服务器本身的HTTPS出站功能正常

二、修正curl脚本中的错误参数

你的脚本存在一个明显的不合理设置,可能间接引发连接异常:

  • GET请求无需设置Content-Length头:这个头用于标识请求体长度,但GET请求通常没有请求体,你设置的content-length : 86完全无效。Postman会自动忽略这个错误头,但curl会严格发送,可能触发目标服务器的异常校验,直接删掉该头即可。
  • 调整超时参数:将CURLOPT_TIMEOUT => 0改为CURLOPT_TIMEOUT => 30,避免无限等待。
  • 临时关闭SSL证书验证(仅用于测试):如果是SSL证书问题导致连接失败,可添加以下参数测试(生产环境必须开启验证):
    CURLOPT_SSL_VERIFYPEER => false,
    CURLOPT_SSL_VERIFYHOST => false,
    

修正后的脚本示例:

$curl = curl_init();
$url = 'https://mythirdpartydomain.com';
curl_setopt_array($curl, array(
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => '',
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => 'GET',
    CURLOPT_HTTPHEADER => array(
        'Content-Type: application/json',
        'Authorization: Bearer XXXXX233XXX'
    ),
));

$response = curl_exec($curl);
if (curl_errno($curl)) {
    echo curl_error($curl);
}
curl_close($curl);
echo $response;

三、开启curl调试模式定位细节

如果以上步骤未解决问题,开启verbose模式获取详细连接日志:

$curl = curl_init();
$url = 'https://mythirdpartydomain.com';
// 生成调试日志文件
$verboseLog = fopen('curl_debug.log', 'w+');
curl_setopt_array($curl, array(
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => '',
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => 'GET',
    CURLOPT_HTTPHEADER => array(
        'Content-Type: application/json',
        'Authorization: Bearer XXXXX233XXX'
    ),
    CURLOPT_VERBOSE => true,
    CURLOPT_STDERR => $verboseLog
));

$response = curl_exec($curl);
if (curl_errno($curl)) {
    echo curl_error($curl);
}
curl_close($curl);
fclose($verboseLog);
echo $response;

执行后查看curl_debug.log,可看到DNS解析、TCP连接、SSL握手等每一步的细节,根据日志定位具体失败环节。


内容的提问来源于stack exchange,提问作者topnet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 17:10:24