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

PHP调用API返回Bad API Key错误,但相同密钥在Postman中正常

解决PHP调用API返回"Bad API Key"的问题

可能的原因及修复方案

  • 检查Authorization头格式
    多数API的Authorization头要求携带前缀(如Bearer 或Token ),你当前代码直接拼接密钥,而Postman可能自动添加了前缀。比如API要求Bearer认证时,需修改头信息:

    curl_setopt($client, CURLOPT_HTTPHEADER, array('Authorization: Bearer ' . $apiKey));
    

    可直接复制Postman中使用的完整Authorization头格式。

  • 补全必要请求头
    CURLOPT_HTTPHEADER会覆盖默认请求头,可能遗漏了API要求的其他字段(如Content-Type)。参照Postman的完整请求头,补充所有必要项:

    curl_setopt($client, CURLOPT_HTTPHEADER, array(
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json'
    ));
    
  • 清理API密钥的无效字符
    确认$apiKey与Postman中使用的密钥完全一致,无多余空格、换行符。可通过trim()去除首尾空白:

    $apiKey = trim('MY API KEY');
    
  • 调试实际发送的请求头
    开启curl调试模式,对比实际发送的请求头与Postman的差异:

    curl_setopt($client, CURLINFO_HEADER_OUT, true);
    $response = curl_exec($client);
    // 打印实际发送的请求头
    $requestHeader = curl_getinfo($client, CURLINFO_HEADER_OUT);
    echo "<pre>$requestHeader</pre>";
    
  • 对齐请求方法
    Postman可能使用POST方法,而curl默认是GET。若需发送POST请求,需添加配置:

    curl_setopt($client, CURLOPT_POST, true);
    // 若需传递参数,补充:
    // curl_setopt($client, CURLOPT_POSTFIELDS, json_encode($yourParams));
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 11:27:29