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

PHP Bearer Token调用API报错:Authorization Header Not Found求助

排查Authorization Header Not Found错误的解决方案

针对你遇到的API调用返回“Authorization Header Not Found”问题,可按以下步骤逐一排查:

  • 验证服务器是否接收到Authorization头
    有些服务器(如Apache以CGI模式运行PHP)会默认丢弃Authorization头。在你的usersapi.php开头添加代码,打印所有请求头,确认头是否到达后端:

    // 方式1:使用getallheaders(仅适用于Apache模块模式)
    print_r(getallheaders());
    
    // 方式2:兼容所有PHP运行模式的获取方式
    $headers = [];
    foreach ($_SERVER as $key => $value) {
        if (str_starts_with($key, 'HTTP_')) {
            $headerName = str_replace(['HTTP_', '_'], ['', '-'], $key);
            $headerName = ucwords(strtolower($headerName), '-');
            $headers[$headerName] = $value;
        }
    }
    print_r($headers);
    

    若输出中没有Authorization头,可在API所在目录的.htaccess添加以下配置,强制服务器保留该头:

    RewriteEngine On
    RewriteCond %{HTTP:Authorization} ^(.+)$
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%1]
    
  • 检查CURL是否正确发送请求头
    开启CURL的VERBOSE模式,查看实际发送的请求内容,确认Authorization头是否被正确发出:

    $apiUrl = 'https://anabatic.com/api/usersapi.php?op=view';
    $token = '2E59DDE3B0700F63055A0F1BCB6D2FEB';
    
    $ch = curl_init($apiUrl);
    
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        'Authorization: Bearer ' . $token,
    ]);
    // 开启VERBOSE日志
    curl_setopt($ch, CURLOPT_VERBOSE, true);
    $verboseLog = fopen('php://temp', 'w+');
    curl_setopt($ch, CURLOPT_STDERR, $verboseLog);
    
    $response = curl_exec($ch);
    
    // 打印VERBOSE日志
    rewind($verboseLog);
    echo "CURL 请求日志:\n" . stream_get_contents($verboseLog);
    
    // 后续错误处理代码不变...
    curl_close($ch);
    

    查看日志中的请求头部分,确认是否包含Authorization: Bearer 2E59DDE3B0700F63055A0F1BCB6D2FEB。

  • 排查中间件是否过滤请求头
    如果API前端有代理、CDN或Nginx等中间件,需确认这些服务的配置是否允许转发Authorization头。例如Nginx需要显式配置:

    proxy_set_header Authorization $http_authorization;
    
  • 临时测试:用URL参数传递Token
    若头传递始终失败,可临时改用URL参数传递Token进行测试,同时修改API端逻辑适配:

    // 调用端修改URL
    $apiUrl = 'https://anabatic.com/api/usersapi.php?op=view&token=' . $token;
    // 移除CURLOPT_HTTPHEADER相关配置
    

    API端从$_GET['token']获取Token并验证(注意:此方式安全性低于Header传递,仅用于排查)。

  • 确认Token拼接格式
    再次验证Authorization头的拼接是否正确,确保Bearer和Token之间有且仅有一个空格:

    echo 'Authorization: Bearer ' . $token; // 输出检查格式是否正确
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 23:30:04