Flask文件上传接口携带文件时返回405 Method Not Allowed错误求助
问题排查及修复方案
405错误的核心是请求使用的HTTP方法与服务端接口允许的方法不匹配,结合你仅带文件时出错、仅管控服务器可复现的特征,按优先级排查以下点:
- 检查管控服务器前置反向代理(Nginx/Apache等)配置
这是此类问题最常见的诱因:很多反向代理默认会拦截multipart/form-data类型的PUT请求,将其强制转换为POST请求后转发给后端服务,导致和你接口声明的PUT方法不匹配。
验证方法:临时将接口路由的允许方法改为methods=['PUT', 'POST'],如果修改后带文件上传可正常运行,即可确认是该问题,后续调整反向代理的PUT请求转发规则即可。 - 检查请求Body大小限制配置
部分服务器会针对PUT请求设置远小于POST的Body阈值,不带文件时请求体很小可正常通过,带文件后超过阈值被拦截,部分服务的拦截错误码会误返回405而非413。检查Nginx的client_max_body_size等相关配置,确认阈值大于你上传的文件大小。 - 检查管控服务器WAF/安全防护规则
管控类服务器通常会部署Web应用防火墙,不少默认规则会将带文件的PUT请求判定为异常上传操作进行拦截。检查WAF拦截日志,确认该接口是否被规则命中,加入白名单即可。
内容的提问来源于stack exchange,提问作者Drakensage
相关产品推荐
相关产品推荐

