在 Laravel 6 中用原生 cURL 获取响应头需设 CURLOPT_HEADER=>true 和 CURLOPT_RETURNTRANSFER=>true,再拆分或用 curl_getinfo() 辅助;推荐优先使用 Laravel Http 客户端,自动解析 headers() 并支持 header('X') 单值获取。

在 Laravel 6 中使用原生 cURL 获取响应头,核心是正确配置 cURL 选项并解析返回结果。注意:这不是 Laravel 自带的 Http 客户端或 request()->header()(那是处理**入站请求头**),而是你主动发起**出站请求**后读取对方服务器返回的 HTTP 响应头。
启用 CURLOPT_HEADER 并分离响应头与正文
cURL 默认不返回响应头,需显式开启,并配合 CURLOPT_RETURNTRANSFER 才能捕获完整输出:
- 设置
CURLOPT_HEADER => true:让 cURL 将响应头和响应体一起返回为字符串 - 设置
CURLOPT_RETURNTRANSFER => true:避免直接输出,确保返回值可处理 - 调用
curl_exec($ch)后,得到的是“头+体”的混合字符串,需手动拆分
用 curl_getinfo() 更安全地提取响应头
比解析原始字符串更可靠的方式是使用 curl_getinfo() 获取结构化元信息:
Laravel Cloud(cloud.laravel.com)。此技能用于处理所有 Laravel Cloud 请求,包括搜索和读取数据。只要任务涉及 Laravel Cloud,即使用此技能。
-
curl_getinfo($ch, CURLINFO_HEADER_OUT):获取你**发出的请求头**(调试用) -
curl_getinfo($ch, CURLINFO_HTTP_CODE):获取状态码(如 200、404) - 要获取**对方返回的响应头**,必须在执行前设置
CURLOPT_HEADER => true,再对返回内容做explode("\r\n\r\n", $output, 2)拆分;或改用CURLOPT_HEADERFUNCTION回调函数逐行接收
推荐做法:用 Laravel 的 Http 客户端替代原生 cURL
Laravel 6 已内置 Illuminate\Support\Facades\Http(需启用),它自动解析响应头,无需手动处理:
$response = Http::get('https://api.example.com');-
$response->headers();返回关联数组,如['Content-Type' => 'application/json', 'X-Rate-Limit' => '100'] -
$response->header('Content-Type')直接取单个头值(大小写不敏感) - 自动处理重定向、超时、JSON 解析,代码更简洁、健壮
如果坚持用原生 cURL,记得清理和错误检查
实际使用中容易忽略收尾和异常路径:
- 执行后务必调用
curl_close($ch)释放资源 - 检查
curl_exec()是否返回false,再用curl_error($ch)和curl_errno($ch)定位问题 - 设置超时:
curl_setopt($ch, CURLOPT_TIMEOUT, 10)防止卡死 - 若目标接口要求认证,别忘了加
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Authorization: Bearer xxx'])










