我有一个在 Flask 后端运行的 Web 应用程序,其中一个 JS 客户端处理前端工作。flask.session
我在尝试通过简单的 Flask API将键值对保存到 Flask 的会话对象 () 时遇到问题。
我试图修改的会话对象被调用account_id
,两个 API 路由基本上如下所示:
得到
@access_service.route('/current_account.json', methods=['GET'])
@login_required
def show_current_account():
return jsonify(account_id=session.get('account_id'))
邮政
@access_service.route('/current_account.json', methods=['POST'])
@login_required
def update_current_account():
if request.json:
session['account_id'] = request.json['account_id']
return jsonify(account_id=session.get('account_id'))
return jsonify()
在 JS 前端中,对 POST 路由的调用如下:
$.ajax({
url: '/current_account.json',
contentType: 'application/json',
type: 'POST',
data: JSON.stringify({ 'account_id': 10 })
});
看起来确实可以正常工作,ajax 调用返回 200 OK 和正确的返回值。来自 Flask 应用程序的日志还显示会话现在包含值为 10 的键。但是,在发出 POST 请求后立即account_id
查找只会返回一个带值的值。/current_account.json
account_id
null
更奇怪的是,使用简单的浏览器内 REST 客户端并发出相同的 POST 请求以current_account.json
使会话通过整页刷新等按预期工作和持续存在。既然是这样,它让我相信问题与请求本身有关,而不是与 Flask 的会话对象有关,尽管我似乎无法弄清楚究竟是什么导致了它。