You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure APIM配置validate-content策略后JSON请求体校验失效排查

问题场景
  • 部署需求:在Azure APIM中对所有POST请求的JSON格式请求载荷执行校验
  • 已完成配置:
    • 在Schemas模块添加了符合规则的JSON Schema,配置截图:
      APIM Schema配置截图
    • 在入站策略中添加了如下校验规则,指定关联的Schema为已创建的Postschema:
<validate-content unspecified-content-type-action="prevent" max-size="102400" size-exceeded-action="prevent" errors-variable-name="requestBodyValidation">
        <content type="application/json" validate-as="json" action="detect" schema-id="Postschema" />
    </validate-content>
  • 异常表现:传入不符合Schema规则的无效JSON发起请求,接口仍返回200成功响应,未触发校验拦截。
故障原因

配置错误的核心点是validate-content策略中content节点的action参数取值不符合拦截需求:
当前配置的action="detect"为日志记录模式,该模式下APIM仅会把校验错误存入指定的requestBodyValidation上下文变量,不会拦截非法请求,请求会正常转发至后端服务,因此最终返回200成功响应。

修复方法

将content节点的action属性值从detect修改为prevent,修改后的策略配置如下:

<validate-content unspecified-content-type-action="prevent" max-size="102400" size-exceeded-action="prevent" errors-variable-name="requestBodyValidation">
        <content type="application/json" validate-as="json" action="prevent" schema-id="Postschema" />
    </validate-content>

附validate-content策略三个action取值的实际效果,可按需选择:

  • prevent:校验不通过时直接拦截请求,返回400错误响应,不转发至后端,是生产环境校验拦截的常用配置
  • detect:仅记录校验错误到上下文变量,不拦截请求,适合规则灰度验证、审计日志场景
  • ignore:跳过对应类型内容的校验逻辑

内容的提问来源于stack exchange,提问作者Manjunath G

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 01:49:15