Azure API 返回空白响应
请参阅 Azure API 管理故障排除系列文章,这是实验室的第一个方案。 请确保已按照实验室设置说明 进行操作,以重新创建问题。
原始产品版本:API 管理服务
原始 KB 编号: 4464936
症状
API 空白 API 由两个操作 GetHeaders 和 GetMyIp 组成。 GetMyIp 返回 X-FORWARDED-FOR 标头值的值, GetHeaders 返回所有请求标头值。 GetMyIp 返回预期的输出,但 GetHeaders 突然开始返回空白响应, (没有响应正文) 。
GetHeaders API 的预期输出应如下所示:
{
"headers": {
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Encoding": "gzip, deflate",
"Accept-Language": "en-US,en;q=0.5",
"Connection": "close",
"Cookie": "_gauges_unique_day=1; _gauges_unique_month=1; _gauges_unique_year=1; _gauges_unique=1",
"Host": "eu.httpbin.org",
"Upgrade-Insecure-Requests": "1",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0"
}
}
故障排除步骤
若要调试此类问题,最佳方法是收集 APIM 检查器跟踪 以检查 APIM 管道中的请求处理。
- 如果查看跟踪,你会注意到缺少前向请求策略。
- 转发请求策略将传入请求转发到请求 上下文中指定的后端服务。
- 删除此策略会导致请求未转发到后端服务,在成功完成入站部分中的策略后,将立即评估出站部分中的策略。
- 因此,如果在 Blank-API 下检查 <GetHeaders 操作的后端>部分,你会注意到转发请求策略已删除。
- 在后端部分添加转发请求策略或添加 <基 /> 元素,以便它从父级 (即从 API 级别) 继承转发请求策略,这应该可以解决问题。
阅读有关 转发请求 策略的详细信息。
联系我们寻求帮助
如果你有任何疑问或需要帮助,请创建支持请求或联系 Azure 社区支持。 还可以向 Azure 反馈社区提交产品反馈。