【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

 


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

相关文章
|
2月前
|
存储 自然语言处理 安全
从模型智能到系统可信:Quick BI AIPro的 AI-native BI架构
阿里云Quick BI AIPro正式发布,首创AI-native BI架构,以7道可信防线保障数据安全与分析准确。支持自然语言交互,首月赠12.5万Credits,0成本开启企业级智能分析。
297 0
|
2月前
|
人工智能 安全 测试技术
Skill 和 MCP 到底有什么区别?哪个更适合我
本文澄清Skill与MCP本质互补:MCP是AI连接外部系统的“USB-C协议”,解决“能不能连”;Skill是AI执行任务的“操作手册”,解决“会不会做”。二者分属底层通信与上层流程,非二选一。真实场景中常需协同使用。
|
3月前
|
人工智能 JSON 监控
GEO技术原理与实践:从结构化数据到AI引用率的工程化方案
本文深度解析GEO(生成式引擎优化)技术原理与落地实践,涵盖结构化数据标记(FAQ/HowTo/Article Schema)、语义相关性优化(向量检索、同义覆盖、三层内容结构)、可信度工程(E-E-A-T评分、Author/Citation Schema)及效果监测体系,助力内容被AI搜索高频引用。(239字)
|
4月前
|
弹性计算 负载均衡 算法
阿里云SLB负载均衡网站流量分发规则配置完全指南
本文系统讲解了阿里云SLB负载均衡服务中网站流量分发规则的完整配置流程。从SLB产品体系(ALB、NLB、CLB)的选型策略入手,深入剖析了四层与七层监听的本质差异、加权轮询与加权最小连接数等调度算法的原理与适用场景、基于域名与URL路径的高级转发规则配置、会话保持机制的实现方式、健康检查参数的精细化调优等核心知识点。文章提供了详细的控制台操作步骤与阿里云CLI/Python SDK代码示例,涵盖从实例创建、监听配置、服务器组绑定到转发策略设置的全链路实操,并结合最佳实践帮助读者构建高可用、高性能的流量分发架构。
743 0
|
6月前
|
JSON Java fastjson
SpringBoot对接黄金白银期货数据API
该API提供黄金、白银等期货实时行情与K线数据,支持JSON格式。需传入API Key认证,通过/market获取产品ID(PID),再调用/queryFutures或/kline接口获取详情或指定周期K线(如PT1M、P1D)。附OkHttp Java示例及关键字段说明。
|
6月前
|
供应链 API 开发者
农产品价格行情数据接口API介绍
本API提供全国农产品实时及历史价格数据服务,覆盖粮油、果蔬、畜禽、水产等品类,支持按商品、地区、批发市场多维查询,具备标准化、高时效、易集成特点,广泛适用于农业生产、电商定价、政府监管与行业研究等场景。
1279 1
|
6月前
|
API
国内国际全球贵金融黄金白银行情查询API接口介绍
本API提供全球贵金属实时行情服务,覆盖国内(黄金、白银、铜等11个品种)及国际(伦敦金、美黄金、现货铂钯等15个品种)市场,支持实时报价、多周期K线(1分钟至日线)、期货合约查询,数据全面精准,助力投资决策。
1829 1
|
11月前
|
人工智能 自然语言处理 运维
KoalaQA:开源智能问答系统,让 AI 重塑售后服务
KoalaQA 是一款开源智能问答系统,基于大模型打造,支持AI问答、语义搜索与自动运营。可私有化部署,助力企业快速构建客服平台、知识库与社区问答系统,实现零接触解决,降低人工成本,提升服务效率。
1200 0
|
Linux API 数据安全/隐私保护
一文搞懂:【零基础】易盛9.0API入门二:登陆
一文搞懂:【零基础】易盛9.0API入门二:登陆
611 1