其他 Flask 路由无法访问会话变量

问题描述 投票:0回答:1

我不明白为什么我的会话变量没有转移到其他烧瓶路线。我相信我已正确设置它,但我对此代码有问题:

from flask import Flask, request, jsonify, redirect, url_for, render_template, session
from flask_session import Session
import requests
import os
import json

app = Flask(__name__)
app.secret_key = os.urandom(24)

# Session setup
SESSION_TYPE = 'filesystem'
app.config.from_object(__name__)
Session(app)

@app.route('/')
def index():
    shop_origin = session.get('shop_origin', 'Shop Origin In Session Not Set')
    print("index shop_origin is equal to: %s" % shop_origin, flush=True)
    if not shop_origin:
        session['have_shop_info_in_session'] = False

    if 'have_shop_info_in_session' in session:
        print("have_shop_info_in_session is equal to: %s" % session['have_shop_info_in_session'], flush=True)

    if 'have_shop_info_in_session' in session and session['have_shop_info_in_session']:
        shop_info = session.get('shop_info', 'No Shop Info Found')
        return render_template('app_interface.html')
    else:
        return render_template('fetch_shop_info.html')


@app.route('/set_shop_info', methods=['POST'])
def set_shop_info():
    data = request.get_json()
    shop_origin = data.get('shopOrigin')
    if not shop_origin:
        return jsonify({'error': 'Shop origin not provided'}), 400

    session['shop_origin'] = shop_origin
    print("Loaded session shop_origin: %s" % session.get('shop_origin'), flush=True)
    session['have_shop_info_in_session'] = True  # Set the flag to true
    print("set_shop_info have_shop_info_in_session is equal to: %s" % session['have_shop_info_in_session'], flush=True)
    return jsonify({'status': 'success'}), 200

当此代码运行时,我在日志中收到带有

Loaded session shop_origin: testing-store.myshopify.com
set_shop_info have_shop_info_in_session is equal to: True
的积极标志,但是一旦
fetch_shop_info.html
中的 Javascript 重定向到索引 Flask 路由,日志就会显示
index shop_origin is equal to: Shop Origin In Session Not Set

为什么变量没有传输到会话中的其他路由?浏览器中已启用 Cookie。

编辑:我尝试在不同的浏览器中运行代码,它似乎工作正常,所以问题必须出在我的浏览器(Brave 浏览器)上。我为 Shopify 关闭了 Brave Shields,我可以看到浏览器似乎正确存储了 cookie。我仍然不确定问题到底是什么,但我更接近弄清楚问题是什么了。

javascript python flask shopify session-cookies
1个回答
0
投票

该代码在 Firefox 中可以正常运行,但在 Brave 浏览器中不能正常运行,因此问题出在浏览器上。我不知道这段代码的作用,但这似乎通过将其添加到我的代码顶部来使代码工作。 这是我找到解决方案的链接

app.config.update(SESSION_COOKIE_SAMESITE="None", SESSION_COOKIE_SECURE=True)
© www.soinside.com 2019 - 2024. All rights reserved.