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

Azure APIM调用Webservice返回400错误:输入无JSON令牌

排查Azure APIM转发DELETE请求体导致的400错误

核心排查方向

1. 检查APIM是否丢弃了DELETE请求体

  • 部分网关默认会忽略DELETE方法的请求体,APIM可能因策略或默认配置未转发请求体至后端。
  • 操作步骤:
    • 登录Azure门户,进入目标APIM实例,找到对应API的DELETE操作,查看入站策略,确认没有set-body策略清空请求体,也无rewrite-uri等策略意外移除请求体内容。
    • 使用APIM测试控制台发起请求,启用**跟踪(Trace)**功能,查看请求在APIM处理前后的Request Body内容,确认请求体是否被正确转发。

2. 验证Content-Type请求头的一致性

  • 后端JSON解析器依赖Content-Type: application/json识别请求体格式,若APIM修改或丢失该头,会触发解析失败。
  • 操作步骤:
    • 在APIM跟踪记录中,检查入站请求的Content-Type头是否为application/json,且未被APIM策略修改为text/plain等其他值。
    • 对比测试环境与生产环境的APIM策略,确认生产环境无额外修改Content-Type的逻辑。

3. 对比测试与生产环境的APIM后端配置

  • 即使API定义一致,后端连接配置的细微差异也可能导致请求体传输异常。
  • 操作步骤:
    • 检查生产环境APIM的后端设置:是否启用HTTP/2协议?是否开启Gzip/Brotli压缩?这些配置可能影响请求体的完整性。
    • 对比测试环境与生产环境的后端池配置,确认代理设置、超时时间等参数完全一致。

4. 检查APIM的API定义细节

  • 若APIM的DELETE操作未正确定义请求体,可能导致APIM默认不转发请求体。
  • 操作步骤:
    • 在APIM的API定义中,查看DELETE操作的请求体配置,确认已添加application/json类型的请求体定义,且按后端要求标记为必填。
    • 导出测试环境与生产环境的API定义(OpenAPI/Swagger),用文本对比工具检查DELETE操作的配置差异。

5. 查看后端服务器的请求日志

  • 直接调用后端正常,但APIM转发的请求可能存在编码、额外请求头等细微差异,导致后端解析失败。
  • 操作步骤:
    • 开启后端服务器的详细请求日志,记录来自APIM的请求内容,包括请求体、请求头、HTTP版本等。
    • 对比直接调用与APIM调用的请求日志,定位差异点(比如APIM是否发送了空请求体)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 04:27:12