Flask接口仅支持POST却收到GET请求,报405错误求助
排查Flask POST接口405错误的常见原因
- 核对请求代码的HTTP方法
别光想当然,仔细看代码里的请求方法:比如用requests库的话,是不是写成了requests.get()而不是requests.post()?只要方法写错,直接发GET请求,必然触发405错误。 - 检查URL末尾的斜杠问题
如果你的路由定义是/fbr/(带斜杠),但请求代码里用的是/fbr(不带斜杠),Flask会自动重定向到带斜杠的地址,这时候POST请求会被转换成GET,返回405。Postman可能自动补全了斜杠,或者你输入的是带斜杠的地址,所以能正常请求。 - 确认请求库的参数传递逻辑
比如用urllib这类库时,要确认是否正确构建了POST请求,有没有调用错误的方法;别把POST的请求体参数错误地混在URL参数里,虽然这不会直接导致方法变更,但可能伴随请求逻辑出错。 - 再次核对Flask路由定义
虽然Postman能正常请求,但还是再确认下路由代码:是不是@app.route('/fbr', methods=['POST'])?有没有不小心写成methods=['GET']或者漏写了methods参数(默认只允许GET)? - 排查中间件/代理的影响
如果你的代码请求经过了代理、反向代理或者Flask的中间件,可能被修改了请求方法。比如某些安全中间件、反向代理配置错误,把POST转成了GET。Postman直接请求服务器,没经过这些环节,所以正常。
内容的提问来源于stack exchange,提问作者MSDians
相关产品推荐
相关产品推荐

