调用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
相关产品推荐
相关产品推荐

