Azure APIM 触发按键速率限制时出现意外响应正文

问题描述 投票:0回答:1

我的 APIM 中有一项策略,用于在名为“client-id”的标头在一分钟内调用端点两次以上时限制对端点的调用。 节流部分工作正常,但达到限制时的响应主体不是我预期的。

来自 https://stackoverflow.com/a/65576593/22934799 我希望响应正文是带有状态代码和消息的 json,但我得到的是带有 HTTP 403 Forbidden 的 html:

<html>
<head>
    <title>Request Rejected</title>
</head>

<body>The requested URL was rejected. Please consult with your
    administrator.<br><br>Your support ID is: 11411346622183591440</body>
</html>

这里发生了什么?对于 API 来说,获取 HTML 并不是很干净。

相关政策。

<rate-limit-by-key calls="2"
            renewal-period="60"
            counter-key="@(context.Request.Headers.GetValueOrDefault("client-id",""))"
/>

我还尝试将策略放在 APIM Web 中的 Echo API 上(没有其他可能干扰的策略)并点击它直到触发限制,但随后它只是给我一个警告通知,说“无法完成请求。请尝试”稍后再试。”这并不是很有帮助,因为它没有提供 http 代码或任何东西。

azure-api-management
1个回答
0
投票

当超出定义的限制时,我能够获得

rate-limit-by-key
政策的预期响应。

我在 Echo API 中使用此策略。

<policies>
    <inbound>
        <base />
        <rate-limit-by-key calls="2" renewal-period="60" counter-key="@(context.Request.Headers.GetValueOrDefault("client-id",""))" />
    </inbound>
</policies>

测试-

enter image description here enter image description here

当超过限制呼叫时,我得到的响应低于

enter image description here

它只是给我一个警告通知,说“无法完成请求。请稍后再试。”这并不是很有帮助,因为它没有提供 http 代码或任何东西。

尝试刷新/加载页面并检查,我相信您也会得到结果,否则您可以创建一个新的 APIM 实例并尝试。如果您的问题仍然存在,我建议您与产品团队联系。

© www.soinside.com 2019 - 2024. All rights reserved.