Как предотвратить большие POST-запросы файлов, используя Azure APIM? - PullRequest
1 голос
/ 28 февраля 2020

Как предотвратить запросы большого файла с помощью Azure APIM?

Пример: заблокировать любой запрос POST, имеющий размер файла> 50 МБ

Ответы [ 2 ]

2 голосов
/ 28 февраля 2020

Вы можете применить следующую политику для всех ваших API. Для каждого запроса POST политика проверяет размер тела, а если размер превышает 50 МБ, она возвращает статус 413 - Слишком большая полезная нагрузка.

<policies>
    <inbound>
        <base />
        <choose>
            <when condition="@(context.Request.Method == "POST")">
                <set-variable name="bodySize" value="@(context.Request.Headers["Content-Length"][0])" />
                <choose>
                    <when condition="@(int.Parse(context.Variables.GetValueOrDefault<string>("bodySize"))<52428800)">
                        <!--let it pass through by doing nothing-->
                    </when>
                    <otherwise>
                        <return-response>
                            <set-status code="413" reason="Payload Too Large" />
                            <set-body>@{
                                    return "Maximum allowed size for the POST requests is 52428800 bytes (50 MB). This request has size of "+ context.Variables.GetValueOrDefault<string>("bodySize") +" bytes";
                                } 
                            </set-body>
                        </return-response>
                    </otherwise>
                </choose>
            </when>
        </choose>
    </inbound>
    <backend>
        <base />
    </backend>
    <outbound>
        <base />
    </outbound>
    <on-error>
        <base />
    </on-error>
</policies>
0 голосов
/ 09 марта 2020

Существуют политики, называемые квота по ключу и квота по подписке , которые помогут пользователям блокировать вызовы, превышающие указанную пропускную способность. Пожалуйста, проверьте эту ссылку для более подробной информации. введите описание ссылки здесь

...