【Azure APIM】APIM Policy是否可以阻止大于50MB文件的上传呢?

简介: 在Azure API Management中,可通过配置入站策略限制POST请求体大小。利用Content-Length头判断请求长度,超过50MB(52428800字节)时返回413状态码,有效防止大文件上传导致资源浪费或服务中断。

问题描述

在使用 Azure API Management(APIM)时,如何防止客户端发送过大的 POST 请求?例如,如何阻止任何超过 50MB 的文件上传请求,以避免资源浪费或潜在的服务中断。

 

问题解答

可以的。通过在 Azure APIM 中配置策略(Policy)来实现对请求体大小的限制。

 

具体做法如下:

1: 依赖 Content-Length 头部信息:通过检查请求头中的 Content-Length 值来判断请求体大小。

2: 使用 Inbound 策略进行判断:在 API 的 inbound 策略中添加如下逻辑:

  • 判断请求是否为 POST。
  • 获取 Content-Length 值。
  • 如果请求体大小超过 50MB(即 52428800 字节),则返回 HTTP 状态码 413(Payload Too Large)。


示例策略代码如下:

<!--
    - Policies are applied in the order they appear.
    - Position <base/> inside a section to inherit policies from the outer scope.
    - Comments within policies are not preserved.
-->
<!-- Add policies as children to the <inbound>, <outbound>, <backend>, and <on-error> elements -->
<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)">
            <!-- 请求体小于 50MB,允许通过 -->
          </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>
        </outbound>
  <on-error>
    <base />
  </on-error>
</policies>

 

[END]

 

参考资料

How to prevent large file POST requests using Azure APIM? https://stackoverflow.com/questions/60448273/how-to-prevent-large-file-post-requests-using-azure-apim

 


当在复杂的环境中面临问题,格物之道需:浊而静之徐清,安以动之徐生。 云中,恰是如此!

相关文章
|
7月前
|
人工智能 监控 安全
Gartner报告:可观测性平台魔力象限
本文由Gregg Siegfried等作者撰写,阐述了可观测性平台如何通过遥测数据采集、AI分析与成本优化,助力企业提升系统健康度与业务韧性,并详解市场定义、核心功能及主流供应商优劣势。
Gartner报告:可观测性平台魔力象限
|
Linux API 数据安全/隐私保护
一文搞懂:【零基础】易盛9.0API入门二:登陆
一文搞懂:【零基础】易盛9.0API入门二:登陆
426 1
|
存储 安全 搜索推荐
什么是PDS
简述什么是PDS以及基于PDS搭建的企业网盘的体验感受
|
数据可视化 数据库 Python
Django(7)Admin管理工具(二)
Django(7)Admin管理工具(二)
298 0
Django(7)Admin管理工具(二)
|
传感器 算法 机器人
机器人SLAM建图与自主导航
前言 这篇文章我开始和大家一起探讨机器人SLAM建图与自主导航 ,在前面的内容中,我们介绍了差速轮式机器人的概念及应用,谈到了使用Gazebo平台搭建仿真环境的教程,主要是利用gmapping slam算法,生成一张二维的仿真环境地图 。我们也会在这篇文章中继续介绍并使用这片二维的仿真环境地图,用于我们的演示。 教程 SLAM算法的引入 (1)SLAM:Simultaneous Localization and Mapping,中文是即时定位与地图构建,所谓的SLAM算法准确说是能实现SLAM功能的算法,而不是某一个具体算法。 (2)现在各种机器人研发和商用化非常火 ,所有的自主机器
1022 9
|
7月前
|
JavaScript Java 大数据
基于JavaWeb的销售管理系统设计系统
本系统基于Java、MySQL、Spring Boot与Vue.js技术,构建高效、可扩展的销售管理平台,实现客户、订单、数据可视化等全流程自动化管理,提升企业运营效率与决策能力。
|
7月前
|
机器学习/深度学习 运维 监控
故障不是洪水猛兽:聊聊智能运维的“自愈”体系该咋搭
故障不是洪水猛兽:聊聊智能运维的“自愈”体系该咋搭
322 6
|
安全 Java API
JUC系列《深入剖析ConcurrentHashMap:高并发环境的Map最优解 》
本文深入解析Java并发容器ConcurrentHashMap,从JDK 1.7分段锁到JDK 1.8的CAS+synchronized优化,剖析其高性能设计原理,并结合核心API与实战代码,详解线程安全、原子操作及LongAdder性能优化技巧,助你掌握高并发编程利器。
|
7月前
|
存储 编解码 JavaScript
【简创AIGC】创建剪映草稿
CREATE_DRAFT接口用于创建剪映草稿,支持自定义视频宽高(如1080P、720P、竖屏等)。成功后返回草稿URL及使用指南,适用于多种视频编辑场景。