Я делаю вход для приложения в ответ с бэкэндом в фляге, но сеанс не работает.
Приложение фляги работает на удаленном сервере на pythonanywhere, и я тестирую приложение реакции на своем локальном хосте: 3000
Вот код для фляжного приложения:
app = Flask(__name__)
app.config["SESSION_PERMANENT"] = True
app.config["SESSION_TYPE"] = "filesystem"
app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(hours=5)
Session(app)
CORS(app, supports_credentials = True, resources = {r"/webapp/*": {"origins": "http://localhost:3000/"}})
@app.route("/webapp/login", methods = ["POST"])
def login():
user = request.get_json(force=True)
Email = user.get("email", "")
Password = user.get("password", "")
login = Login.login(Email, Password)
if login["Success"]:
session["email"] = Email
return login
@app.route("/webapp/checksession", methods = ["GET"])
def checksession():
sessionEmail = session.get("email", "")
if sessionEmail == "":
return utils.returnResult(False, "Session not valid")
return utils.returnResult(True, "")
А в приложении React я использую axios для входа в систему и проверки сеанса на сервере, например:
axios.get(APIURL + CHECK_SESSION, {withCredentials: true})
.then(response => {
console.info(response.headers);
setSession(response.data.success)
setCheckedSession(true)
})
.catch(err => {
setSession(false)
setCheckedSession(true)
if (err.response) {
}
else {
window.alert('Could not establish a connection to the server!');
}
});
В инструментах разработчика мы видим, что сервер отправляет сеанс cookie:
Но когда я проверяю файлы cookie для приложения, там ничего нет:
(извините за португальца)
И в обработчике обещаний axios, когда я печатаю заголовки ответа, это все, что я получаю:
Таким образом, каждый раз, когда реагирующее приложение проверяет, есть ли у пользователя действительный сеанс на сервере, сервер создает новый сеанс, что означает, что реагирующее приложение не сохраняет и не отправляет файл cookie на сервер.
Кроме того, когда я тестирую это с почтальоном, все работает нормально.
Я искал во всех местах, и я не могу найти ответ на этот вопрос. Может ли кто-нибудь помочь мне понять, что я делаю неправильно, пожалуйста?





Оказывается, в сеансе фляги отсутствовали конфигурации:
app.config["SESSION_COOKIE_SAMESITE"] = "None"
app.config["SESSION_COOKIE_SECURE"] = True