调用GraphQL API返回Authorization header格式无效错误如何排查?
问题排查与解决方法
报错Authorization header format invalid明确指向请求中的鉴权头格式不符合服务端要求,可按以下步骤逐一排查:
- 检查Authorization头的前缀配置
绝大多数API要求密钥前添加固定标识前缀,比如Bearer、Apikey(注意前缀末尾必须有1个半角空格),不可直接填写纯API密钥。你使用的测试密钥正确的头值格式大概率为:
可参考官方文档确认前缀要求,不要额外添加引号、换行等多余字符。Apikey 8626cf56-e364-4fd1-4fe0-311e23ac6355 - 排除Postman配置冲突
不要同时在Postman的「Authorization」标签页和「Headers」标签页配置鉴权信息,二者会互相覆盖导致生成错误头:- 若使用Authorization页配置,需先清空Headers页手动添加的Authorization头,再选择对应鉴权类型(比如API Key/Bearer Token)填写信息
- 若手动配置Headers,需将Authorization页的鉴权类型选择为「No Auth」,避免冲突
- 校验实际发送的请求头
Postman发送请求后,可在控制台查看实际发出的请求完整头信息,确认Authorization头的键名拼写正确(标准写法为Authorization,部分服务端对大小写敏感)、值和预期完全一致,没有被全局/环境变量、插件、请求预设篡改。 - 使用curl验证排除Postman问题
你可以通过curl命令行直接发起请求,排除Postman自身配置问题,参考命令如下(替换为实际API端点):
若curl请求正常返回数据,即可确认是Postman配置错误,重新检查Postman的鉴权配置即可。curl -X POST https://你的API端点地址 \ -H "Content-Type: application/json" \ -H "Authorization: Apikey 8626cf56-e364-4fd1-4fe0-311e23ac6355" \ -d '{"query":"query { hotelX { search(criteria: { checkIn: \"2021-12-28\", checkOut: \"2021-12-29\", occupancies: [{ paxes: [{age: 30}, {age: 30}] }], hotels: [\"1\"], currency: \"EUR\", market: \"ES\", language: \"es\", nationality: \"ES\" }, settings: { client: \"client_demo\", context: \"HOTELTEST\", auditTransactions: false, testMode: true, timeout: 25000 }, filter: { access: { includes: [\"0\"] } }) { context errors{ code type description } warnings{ code type description } options { id accessCode supplierCode hotelCode hotelName boardCode paymentType status occupancies { id paxes { age } } rooms { occupancyRefId code description refundable roomPrice { price { currency binding net gross exchange { currency rate } } breakdown { price { currency binding net gross exchange { currency rate } markups { channel currency binding net gross exchange { currency rate } rules { id name type value } } } } beds { type count } ratePlans { code } } price { currency binding net gross exchange { currency rate } markups { channel currency binding net gross exchange { currency rate } rules { id name type value } } } supplements { code name description supplementType chargeType mandatory durationType quantity unit resort { code name description } price { currency binding net gross exchange { currency rate } markups { channel currency binding net gross exchange { currency rate } } } } surcharges { chargeType description price { currency binding net gross exchange { currency rate } markups { channel currency binding net gross exchange { currency rate } } } } rateRules cancelPolicy { refundable cancelPenalties { hoursBefore penaltyType currency value } } remarks } } }"}' - 确认鉴权传递方式
若以上步骤都无效,可再次查阅官方文档,确认API是否要求把密钥放在自定义头(比如X-API-Key)、URL参数或者GraphQL请求体的上下文字段中,而非标准Authorization头。
内容的提问来源于stack exchange,提问作者José Carlos
相关产品推荐
相关产品推荐

