Flask REST API /login路由Postman报404错误求助
Flask REST API /login 路由POST请求404问题排查
问题现象
- 浏览器以GET方式访问
snake.app-host.com/login,返回预期的405 Method Not Allowed错误 - 使用Postman发送POST请求到同一路由,返回
404 Not Found错误;请求携带JSON格式的用户名和密码,预期获取JWT Token
关键信息核对区
Postman请求详情
请补充:请求完整URL、请求Headers(重点是
Content-Type)、请求Body的具体内容
404响应内容
请补充:响应体原文、响应Headers信息
Flask核心代码
# 替换为你的实际代码 from flask import Flask, request, jsonify import jwt app = Flask(__name__) app.config['SECRET_KEY'] = 'your-secret-key' @app.route('/login', methods=['POST']) def login(): auth_data = request.get_json() if not auth_data or not auth_data.get('username') or not auth_data.get('password'): return jsonify({'msg': 'Missing login credentials'}), 401 # 此处替换为你的用户验证逻辑 if auth_data['username'] == 'test' and auth_data['password'] == 'test': token = jwt.encode({'username': auth_data['username']}, app.config['SECRET_KEY'], algorithm='HS256') return jsonify({'token': token}), 200 return jsonify({'msg': 'Invalid credentials'}), 401 if __name__ == '__main__': app.run(debug=True)
Plesk配置规则
请补充:URL重写规则、反向代理配置、域名绑定相关设置
排查步骤
确认请求路由匹配
- 检查Postman的请求URL是否为
https://snake.app-host.com/login,避免末尾多斜杠(/login/)或拼写错误;若Flask设置了strict_slashes=True,路由会严格区分斜杠 - 启动Flask应用时打印所有注册路由,确认
/login的POST方法已注册:print(app.url_map)
- 检查Postman的请求URL是否为
检查请求Headers
- 确保Postman中设置了
Content-Type: application/json,虽然这不会直接导致404,但错误的Content-Type可能引发后续逻辑异常,需优先确认 - 验证Host头是否为
snake.app-host.com,避免反向代理时路由转发错误
- 确保Postman中设置了
验证本地运行状态
- 在本地启动Flask应用,用Postman请求
http://localhost:5000/login,若能正常返回JWT,说明代码逻辑无问题,问题出在服务器配置
- 在本地启动Flask应用,用Postman请求
排查Plesk服务器配置
- 检查URL重写规则,确保POST请求能被正确转发到Flask应用的WSGI入口(如
wsgi.py) - 确认反向代理配置是否将域名请求转发到Flask应用的运行端口(通常是5000或自定义端口)
- 检查是否启用了HTTPS强制跳转,若Postman使用HTTP请求,可能因重定向导致路由丢失(需确认重定向后的URL是否正确)
- 检查URL重写规则,确保POST请求能被正确转发到Flask应用的WSGI入口(如
查看服务器日志
- 查看Flask应用的访问日志,确认Postman的请求是否到达应用;若未到达,说明Plesk的转发规则存在问题
- 查看Plesk的Nginx/Apache日志,排查请求是否被拦截或路由转发错误
内容的提问来源于stack exchange,提问作者MiKDO
相关产品推荐
相关产品推荐

