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

如何在PHP中获取所有请求头参数?API请求头获取失败求助

在PHP中获取请求头数据的几种方法

首先得澄清一个关键点:$_POST是用来获取POST请求体里的表单数据的,和请求头完全是两回事——这就是你拿不到头数据的核心原因~下面给你几种实用的获取所有请求头的方式:

1. 使用getallheaders()(推荐,PHP 5.4+通用兼容)

这个函数会直接返回一个包含所有请求头的关联数组,键就是请求头的原始名称,值就是对应的内容,用起来特别直观:

// 获取所有请求头
$allHeaders = getallheaders();
// 打印查看完整请求头列表
print_r($allHeaders);

// 单独提取你的Access-Key
$accessKey = $allHeaders['Access-Key'] ?? '未获取到密钥';
// 提取Content-Type
$contentType = $allHeaders['Content-Type'] ?? '';

2. 使用apache_request_headers()(仅Apache服务器环境)

如果你的服务器是Apache,这个函数也能返回完整的请求头数组,用法和getallheaders()几乎一致:

$allHeaders = apache_request_headers();
print_r($allHeaders);
$accessKey = $allHeaders['Access-Key'] ?? '';

3. 遍历$_SERVER数组(兼容所有极端环境)

如果上面两个函数都没法用(比如FastCGI或者某些特殊配置环境),可以通过遍历$_SERVER来提取请求头:PHP会自动把请求头转换成HTTP_开头的键名,原头名里的连字符-会换成下划线_,字母全大写。比如你的Access-Key会变成HTTP_ACCESS_KEY:

$allHeaders = [];
foreach ($_SERVER as $key => $value) {
    if (str_starts_with($key, 'HTTP_')) {
        // 还原请求头原始名称:去掉HTTP_前缀,下划线换回连字符
        $headerName = str_replace('_', '-', substr($key, 5));
        $allHeaders[$headerName] = $value;
    }
}
// 打印所有请求头
print_r($allHeaders);

// 单独获取Access-Key
$accessKey = $_SERVER['HTTP_ACCESS_KEY'] ?? '';

用上面任意一种方法,都能轻松拿到你需要的请求头数据啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:26:12