node.js - 使用 nodejs axios/fetch 时,Flask 会话不持久化数据
问题描述
我有一个 server.js 用于从我的烧瓶服务器获取数据。我在我的烧瓶应用程序中使用会话来保存用户登录信息。如果我使用邮递员,一切都会完美运行。但是,使用 server.js 获取数据会导致烧瓶会话重置每个请求。
例如,如果我登录并且在 sign_in() 中打印的会话是<SecureCookieSession {'user': 'admin'}>
. 紧接着,当调用 user_info() 时,打印的会话为空,打印内容为<SecureCookieSession {}>
. 似乎它为每个请求创建了一个新会话。谁能帮我弄清楚如何解决这个问题?感谢所有的帮助!
服务器.js:
const express = require('express');
const path = require('path');
const cors = require('cors');
const fetch = require('node-fetch');
const axios = require('axios');
const app = express();
const proxy = 'http://0.0.0.0:5000';
app.use(cors());
app.use(express.json());
app.use(express.static(path.join(__dirname, '.', 'build')));
app.get('/user', function(req,res) {
axios.get(proxy + '/user',{ withCredentials: true })
.then((response) => res.json(response.data));
});
app.post('/login', function(req,res) {
let body = req.body;
axios.post(proxy + '/login', body, { withCredentials: true })
.then((response) => res.json(response.data));
});
app.get('/*', (req, res) => {
res.sendFile(path.join(__dirname, '.', 'build', 'index.html'));
});
app.listen(8080);
应用程序.py:
from flask import Flask, request, json, session, jsonify
from api import driver
from flask_cors import CORS
def create_app(db_url="init"):
app = Flask(__name__)
app.secret_key = "asfsdfsdfdsfsa"
app.SESSION_TYPE = 'filesystem'
driver = driver()
CORS(app)
@app.route('/login', methods=['POST'])
def sign_in():
request_data = json.loads(request.data)
ret = driver.login(request_data)
if ret["valid"]:
session["user"] = request_data["username"]
ret = jsonify(ret)
return ret
@app.route('/user', methods=['GET'])
def user_info():
ret = {"valid": False}
if "user" in session:
ret = driver.get_user_info(session["user"])
ret = jsonify(ret)
return ret
return app
迄今为止的尝试:
- 我尝试使用flask_cors,仍然无法正常工作。
- 我为我的前端尝试了 axios 和 fetch 。使用 fetch 时,我添加了 'credentials': 'include'。还是不行。
- 试图添加@cross_login。不工作。
- 试图设置supports_credentials=True,不起作用。
解决方案
推荐阅读
- reactjs - 在 ReactJs 中从父级复制道具?
- php - 保护通过符号链接访问的非 Web 位置中的文件
- php - php echo/print 尝试输出值时崩溃
- html - Angular 5 中组件扩展期间的模板扩展
- sql-server-2014 - 将具有多个值的表查询更新到列
- maven - 缺少 org.apache.commons.collections.CollectionUtils
- php - Selenium 在与 Behat 和 Mink 一起使用时如何工作?
- json - 应用程序随机崩溃并出现 JSON 错误
- c++11 - 模板类的条件实例化
- python - 遍历 pandas 数据框中的所有列以在分隔符上拆分