python - Flask session 不持久

标签 python ajax session flask

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

我尝试修改的 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 应用程序记录还显示, session 现在包含值为 10 的键 account_id。但是,在发出 POST 请求后立即查找 /current_account.json 只是返回值为 nullaccount_id

更奇怪的是,使用简单的浏览器内 REST 客户端并向 current_account.json 发出相同的 POST 请求会导致 session 通过全页刷新等按预期工作并持续。既然如此,它让我相信问题与请求本身有关,而不是与 Flask 的 session 对象有关,尽管我似乎无法弄清楚到底是什么导致了它。

最佳答案

在我之前的项目中,我们遇到了同样的问题,结果发现$.ajax不携带cookie。我们使用手动 session 存储来解决这个问题。

关于python - Flask session 不持久,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12915989/

相关文章:

php - 无法使用Python在MySQL中插入表或创建表

session - PHPMyAdmin 自动 session 销毁问题

ruby-on-rails - 有人能够破解并创建 Rails session cookie 吗?

php - Jquery AJAX 从 PHP 返回

node.js - 我可以通过 express next() 函数发送数据吗?

python - 将 ASN.1 字符串与 python 正则表达式匹配

python - 无法导入 Google Cloud Datastore 库

python - 子进程: "Exec format error" in gekko package

javascript - 在加载时和 5 秒后运行 ajax 调用结果

ajax - Elasticsearch:包含查询