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

curl设置动态Header Token时提示无效API密钥问题

问题分析

你的问题出在jq '.key'的输出包含双引号,导致变量$key的值是带引号的字符串(比如"eyJrIjoi..."),而API需要的是不带引号的纯Token值。硬编码时你手动去掉了引号所以能正常调用,脚本里直接用带引号的$key就会触发「invalid API key」错误。

解决方案

有两种简单的修复方式:

方式1:让jq输出无引号的原始字符串

修改获取key的命令,给jq加上-r(raw output)参数,直接输出不带双引号的Token:

apikeyName="$(date '+%s')"
key=$(curl -k -X POST -H "Content-Type: application/json" \
                    -d '{"name":"'$apikeyName'", "role": "Admin"}' \
                    http://admin:admin@localhost:3000/api/auth/keys | jq -r '.key')

echo $key
# Alerting API
curl -k -X GET 'http://localhost:3000/api/alert-notifications' -H 'Authorization: Bearer '$key'';

方式2:手动过滤变量中的双引号

如果不想修改jq命令,可以在赋值时用tr命令去掉引号:

key=$(curl -k -X POST -H "Content-Type: application/json" \
                    -d '{"name":"'$apikeyName'", "role": "Admin"}' \
                    http://admin:admin@localhost:3000/api/auth/keys | jq '.key' | tr -d '"')
验证效果

修改后执行脚本,echo $key输出的会是不带双引号的纯Token字符串,此时调用API就能正常通过认证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 11:16:55