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

调用Apigee API时出现401未授权错误,请求排查方案

解决Angular调用Apigee API的401未授权问题

你收到的错误信息已经给出了明确线索:

{"fault":{"faultstring":"Failed to resolve API Key variable request.header.apikey","detail":{"errorcode":"steps.oauth.v2.FailedToResolveAPIKey"}}}

它说明Apigee的API Key验证策略在请求头里找不到名为apikey的字段,结合Postman能正常请求的情况,大概率是header字段名不匹配或者Angular没正确发送header,以下是具体排查和解决步骤:

1. 核对Postman的请求头字段名

先打开你能正常运行的Postman请求,查看Headers标签里的API Key字段:

  • 是不是用的X-API-Key而非apikey?(很多API网关习惯用带X前缀的自定义header)
  • 有没有大小写要求?比如Apikey或APIKey?
    把Postman里的正确字段名替换到Angular代码中:
$http({ 
  url: "https://xxx_test.com/data?sdate=date", 
  method: "GET", 
  headers: { 
    'X-API-Key': 'XXXXXXXXXXXXXXXXX' // 替换为Postman中实际使用的字段名
  }, 
})

2. 确认Angular是否真的发送了目标header

打开浏览器开发者工具(F12),切换到Network标签,发起请求后查看对应请求的Headers:

  • 若找不到你设置的API Key字段,说明Angular的header设置存在问题:
    • 检查是否有全局HTTP拦截器覆盖了请求头?
    • 尝试用全局默认header测试:
      $http.defaults.headers.common['apikey'] = 'XXXXXXXXXXXXXXXXX';
      $http.get("https://xxx_test.com/data?sdate=date");
      

3. 检查Apigee的验证策略配置

如果确认header已正确发送,那问题可能出在Apigee端:

  • 登录Apigee控制台,找到你的API对应的Verify API Key策略
  • 检查策略中配置的API Key变量是否为request.header.apikey——若Postman使用的是其他字段,需将此处修改为对应变量(如request.header.X-API-Key)

4. 额外排查:CORS配置问题

浏览器的CORS政策可能会过滤自定义header,需确认Apigee已配置允许目标header的CORS响应头:

  • 确保Apigee的CORS政策中包含Access-Control-Allow-Headers: apikey(或你实际使用的字段名)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 03:58:08