请求限制问题和 HTTP 403 - 禁止的问题
请参阅 Azure API 管理故障排除系列文章,这是实验室的第五个方案。 请确保已按照实验室设置说明 进行操作,以重新创建问题。
原始产品版本:API 管理服务
原始 KB 数: 4464928
症状
资源 API 提取用户的个人信息、社交媒体帖子、评论和照片,并利用为机器学习项目返回的响应。 奇怪的是,在使用几天后, GetPosts 操作开始引发 HTTP 403 - 禁止访问 错误,而其他操作按预期工作。
{
“statusCode”: 403,
“message”: “Forbidden”
}
除上述情况外,我们还遇到 HTTP 429 - 每秒请求 调用 GetComments 操作时出现请求过多错误。 问题在 10 秒后自动得到解决,但一旦再次对 API 进行第一次调用,它就会再次出现。 对于其他操作,不会观察到该行为。
{
“statusCode”: 429,
“message”:“已超出速率限制。 请在 5 秒后重试。”
}
故障排除步骤
HTTP 403 - 实现任何访问限制策略时,可能会引发禁止错误。
检查 APIM 检查器跟踪 ,应注意到存在“ip-filter”策略,该策略筛选器 (允许/拒绝来自特定 IP 地址和/或地址范围的) 调用。
若要检查“ip-filter”策略的范围,请选择“计算有效策略”按钮。 如果未看到在任何范围内实施任何访问限制策略,则应在产品级别执行下一个验证步骤,方法是导航到关联的产品,然后单击“策略”选项。
<inbound> <base /> <choose> <when condition="@(context.Operation.Name.Equals("GetPosts"))"> <ip-filter action="forbid"> <address-range from="0.0.0.0" to="255.255.255.255" /> </ip-filter> </when> </choose> </inbound>
对于第二个问题 (HTTP 429 - 请求过多) 我们将遵循相同的过程,检查 APIM 检查器跟踪,并检查在任何范围内实施任何“速率限制”或“速率限制-逐键”策略。
如果计算有效策略,应注意到访问限制策略 (速率限制) 全局范围(即“所有 API”选项中的“入站处理”下)实现。
<inbound> <choose> <when condition="@(context.Operation.Name.Equals("GetComments"))"> <rate-limit-by-key calls="1" renewal-period="10" increment-condition="@(context.Response.StatusCode == 200)" counter-key="@(context.Request.IpAddress)" /> </when> </choose> </inbound>
详细了解 APIM 中的 ip-filter 和 rate-limit-by-key 策略。
联系我们寻求帮助
如果你有任何疑问或需要帮助,请创建支持请求或联系 Azure 社区支持。 还可以向 Azure 反馈社区提交产品反馈。