Flask会话不持久

时间:2012-10-16 13:39:26

标签: python ajax session flask

我有一个在Flask后端运行的Web应用程序,其中一个JS客户端处理前端工作。我试图通过简单的Flask API将键值对保存到Flask的会话对象(flask.session)时遇到问题。

我尝试修改的会话对象名为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应用程序中记录还会显示会话现在包含值为account_id且值为10.但是,在发出POST请求后立即查找/current_account.json只会返回值为account_id的{​​{1}} {1}}。

使用简单的浏览器内REST客户端并向null发出相同的POST请求仍然是一个陌生人,这会导致会话通过整页刷新等工作并按预期保持。在这种情况下,它让我相信问题与请求本身有关,而不是与Flask的会话对象有关,尽管我似乎无法弄清楚到底是什么造成了它。

1 个答案:

答案 0 :(得分:3)

在我之前的项目中,我们遇到了同样的问题,结果证明$ .ajax不带cookie。我们使用手动会话存储来解决问题。