Проблемы регулирования запросов и HTTP 403 — запрещенные проблемы
Ссылаясь на статью в Azure Управление API серии устранения неполадок, это пятый сценарий лаборатории. Убедитесь, что вы выполнили инструкции по настройке лаборатории, чтобы повторно создать проблему.
Исходная версия продукта: служба Управление API
Исходный номер базы знаний: 4464928
Симптомы
API ресурсов получает персональные данные пользователя, сообщения социальных сетей, комментарии и фотографии и использует ответ, возвращенный для проекта машинного обучения. Странно через несколько дней использования, операция GetPosts начала вызывать HTTP 403 - Запрещенная ошибка, а другие операции работают нормально, как ожидалось.
{
StatusCode: 403,
"message": "Запрещено"
}
Помимо приведенного выше, мы также сталкиваемся с HTTP 429 — ошибка слишком большого количества запросов при вызове операции GetComments для каждого второго запроса. Проблема автоматически получает разрешение после 10 с, однако она повторно выполняется после повторного вызова API. Поведение не наблюдается для других операций.
{
"statusCode": 429,
"message": "Превышено ограничение скорости. Повторите попытку через 5 секунд.
}
Действия по устранению неполадок
Ошибка HTTP 403 Forbidden (Запрещено) может происходить при реализации любой политики ограничения доступа.
Проверьте трассировку инспектора 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>
Дополнительные сведения о политиках ip-filter и rate-limit-by-key в APIM.
Свяжитесь с нами для получения помощи
Если у вас есть вопросы или вам нужна помощь, создайте запрос в службу поддержки или обратитесь за поддержкой сообщества Azure. Вы также можете отправить отзыв о продукте в сообщество отзывов Azure.