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

Twilio POST请求被识别为GET致405错误的排查与解决咨询

问题原因及解决方案

核心原因分析

服务器将Twilio的POST请求识别为GET,大概率是请求在传输链路中被重定向导致方法变更,或是Twilio的Webhook配置存在疏漏,具体场景包括:

  1. Twilio强制HTTPS重定向引发方法转换
    Twilio默认要求Webhook使用HTTPS协议,若你配置的是HTTP地址,Twilio会自动发起重定向到HTTPS。而标准的301/302重定向会将POST请求转为GET,导致服务器收到的请求方法与你的POST路由不匹配,返回405错误。

  2. 反向代理/服务器的重定向规则问题
    若你的服务器(如Nginx)配置了强制HTTPS的重定向规则且使用301/302状态码,同样会触发POST转GET的问题。此外,反向代理若未正确传递请求方法头,也会导致FastAPI识别错误。

  3. Twilio Webhook请求方法配置错误
    即便你确认URL正确,也可能忽略了Twilio控制台中Webhook的请求方法选项——Twilio允许选择GET或POST,若误选GET,自然会发送GET请求。

分步解决方法

1. 确认Twilio Webhook的请求方法

登录Twilio控制台,找到对应电话号码或服务的Webhook设置:

  • 检查"Incoming Call"对应的Webhook是否选择了HTTP POST,而非GET;
  • 同时确认URL以HTTPS开头,避免Twilio自动触发重定向。

2. 修复重定向规则(保留POST方法)

若必须使用HTTP转HTTPS的重定向,不要用301/302,改用307临时重定向(会保留原请求方法和内容):

  • 以Nginx为例,修改配置:
server {
    listen 80;
    server_name your-domain.com;
    return 307 https://$host$request_uri;
}
  • 若直接用Uvicorn处理HTTPS,启动时绑定证书避免重定向:
uvicorn main:app --host 0.0.0.0 --port 443 --ssl-keyfile=./key.pem --ssl-certfile=./cert.pem

3. 配置反向代理正确传递请求信息

若用Nginx作为反向代理,确保配置中传递请求方法和转发头:

location / {
    proxy_pass http://127.0.0.1:8000;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header X-Forwarded-Method $request_method; # 关键:传递请求方法
}

同时启动Uvicorn时加上--proxy-headers参数,让FastAPI信任代理的转发头:

uvicorn main:app --host 0.0.0.0 --port 8000 --proxy-headers

4. 临时兼容方案(不推荐长期使用)

若暂时无法解决重定向问题,可临时给路由添加GET方法支持,规避405错误:

from fastapi import FastAPI, Response
from fastapi.requests import Request

app = FastAPI()

@app.post("/incoming-call")
@app.get("/incoming-call")
async def incoming_call(request: Request):
    # 可根据需求区分处理GET/POST逻辑
    return Response("Call received", status_code=200)

5. 验证请求真实性

使用Twilio的Request Inspector工具查看实际发送的请求详情,确认Twilio发送的是POST还是GET,以及请求是否被中间环节修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 12:40:06