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

接收application/x-www-form-urlencoded时API Gateway报415错误

解决AWS API Gateway + Twilio Webhook的415 Unsupported Media Type错误

核心问题定位

Twilio发送的是application/x-www-form-urlencoded格式请求,而API Gateway默认仅接受application/json,映射配置错误会直接触发415错误或请求解析失败。

分步修复方案

1. 修正API Gateway请求方法的基础配置

  • 进入API Gateway控制台,找到目标API和对应的POST方法
  • 在Method Request中:
    • 打开HTTP Request Headers,添加Content-Type作为可选头(若开启请求验证,需设为必填)
    • 若启用了Request Validator,确保其规则包含对Content-Type头的验证

2. 配置Integration Request的映射模板

  • 进入Integration Request,找到Mapping Templates:
    • 点击Add mapping template,输入application/x-www-form-urlencoded并确认
    • 替换原有模板内容为以下代码,将表单参数转为Lambda可识别的JSON结构:
      {
        "From": "$input.params('From')",
        "To": "$input.params('To')",
        "Body": "$input.params('Body')"
      }
      
    • 确认Content Handling设置为Convert to text (if needed),避免使用Passthrough模式

3. 配置Method Response的响应头

  • 进入Method Response,在HTTP Response Headers中添加Content-Type
  • 将其默认值设为application/xml(Twilio要求接收XML格式的回复)

4. 调整Lambda函数的响应格式

确保Lambda返回符合Twilio要求的XML响应,示例代码:

def lambda_handler(event, context):
    # 从映射后的event中获取Twilio传递的参数
    from_number = event['From']
    incoming_body = event['Body']
    
    # 构建Twilio需要的XML回复
    xml_response = f"""<Response>
        <Message>已收到你的消息:{incoming_body}</Message>
    </Response>"""
    
    return {
        'statusCode': 200,
        'headers': {'Content-Type': 'application/xml'},
        'body': xml_response
    }

5. 重新部署API并验证

  • 在API Gateway控制台点击Deploy API,选择对应的部署阶段
  • 用curl或Postman测试:
    • 请求方法:POST
    • 请求URL:API的部署阶段URL(不要用测试控制台的临时URL)
    • 请求头:Content-Type: application/x-www-form-urlencoded
    • 请求体:From=+123456789&To=+987654321&Body=Test
    • 返回200状态码和正确XML即为配置正常

额外排查点

  • 查看CloudWatch日志,API Gateway的日志会记录请求头、映射过程的具体错误信息
  • 确认Twilio的Webhook URL指向的是API Gateway的正式部署URL,而非测试链接
  • 检查API Gateway的阶段设置,确保映射模板已应用到当前部署的阶段

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 23:35:42