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

如何在PHP cURL中使用getallheaders返回的请求头数组

PHP请求头格式转换解决方案

核心思路

cURL要求传入的请求头是「键名: 键值」格式的字符串组成的索引数组,getallheaders()返回的是键值对关联数组,我们只需要把关联数组的键和值拼接为符合要求的字符串,再转为索引数组即可。

具体实现

方法1:简洁写法(array_map)

适合不需要额外过滤请求头的场景:

// 获取客户端请求头
$clientHeaders = getallheaders();

// 转换为cURL兼容格式
$curlHeaders = array_map(function($name, $value) {
    return "{$name}: {$value}";
}, array_keys($clientHeaders), $clientHeaders);

方法2:循环遍历写法(支持自定义过滤)

适合需要剔除部分不需要转发的请求头的场景,推荐生产环境使用,可以避免和cURL自动生成的请求头冲突:

// 定义禁止转发的请求头,可根据业务需求调整
$forbiddenHeaders = ['Host', 'Content-Length', 'Connection', 'Accept-Encoding'];
$clientHeaders = getallheaders();
$curlHeaders = [];

foreach ($clientHeaders as $name => $value) {
    // 跳过禁止转发的头
    if (in_array($name, $forbiddenHeaders)) {
        continue;
    }
    $curlHeaders[] = "{$name}: {$value}";
}

调用示例

转换完成后直接传入cURL配置即可:

$targetUrl = '你要转发的目标服务地址';
$ch = curl_init($targetUrl);
// 传入转换后的请求头
curl_setopt($ch, CURLOPT_HTTPHEADER, $curlHeaders);
// 其他cURL配置可按需添加
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 00:54:02