You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask跨应用重定向如何携带参数?

跨Flask应用重定向并传递参数的解决方案

方法1:URL查询参数拼接

Flask的redirect()函数不支持直接传额外参数到目标URL,你需要把logged_in作为查询参数拼接到app1的URL末尾,再在app1的视图函数中读取该参数并传给模板。

app2代码修改:

from flask import Flask, redirect

app2 = Flask(__name__)

@app2.get('/login')
def login():
    # 将参数拼接到目标URL后
    target_url = 'http://localhost:5000/?logged_in=True'
    return redirect(target_url)

app1代码修改:

from flask import Flask, render_template, request

app1 = Flask(__name__)

@app1.route('/')
def index():
    # 从查询参数中获取logged_in,默认False
    logged_in = request.args.get('logged_in', 'False').lower() == 'true'
    return render_template('index.html', logged_in=logged_in)

方法2:共享会话存储(适合敏感参数)

如果不想把参数暴露在URL中,可以用Redis等分布式会话存储,让两个Flask应用共享会话数据。

步骤1:安装依赖

pip install flask-redis

步骤2:配置app1和app2的会话存储

两个应用需要使用相同的Redis配置:

# app1 和 app2 都需添加这段配置
from flask import Flask, session, redirect, render_template
from flask_redis import FlaskRedis

app = Flask(__name__)
# 必须设置相同的SECRET_KEY,保证会话加密逻辑一致
app.config['SECRET_KEY'] = 'your_shared_secret_key'
app.config['REDIS_URL'] = 'redis://localhost:6379/0'
redis_client = FlaskRedis(app)

app2中设置会话参数并重定向:

@app2.get('/login')
def login():
    # 在共享会话中设置logged_in状态
    session['logged_in'] = True
    return redirect('http://localhost:5000')

app1中读取会话参数:

@app1.route('/')
def index():
    # 从共享会话中获取参数,默认False
    logged_in = session.get('logged_in', False)
    # 可选:用完后清除该参数,避免影响后续请求
    session.pop('logged_in', None)
    return render_template('index.html', logged_in=logged_in)

方法3:反向代理统一访问路径(可选优化)

如果两个应用部署在同一服务器,可通过Nginx做反向代理,将它们映射到同一个域名的不同路径下(比如/app1和/app2),重定向时可用相对路径,同时会话共享更便捷。此方案需额外部署配置,适合生产环境。


内容的提问来源于stack exchange,提问作者haojie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 00:03:14