#flask
#flask
Вопрос:
Я попытался просто привести приведенный ниже пример. По сути, я обнаружил, что при обычном запросе страницы, таком как запрос индекса или / login, доступны переменные сеанса. Но для моего вызова ajax из моего метода javascript переменная сеанса недоступна. Моя функция ajax использует выборку для вызова / ajax-call. Это происходит только в браузере edge. Это работает в chrome. Интересно, есть ли у кого-нибудь обходной путь?
app.py
from flask import Flask
from flask import Flask, flash, redirect, render_template, request, session, abort
import os
app = Flask(__name__)
@app.route('/')
def home():
print('works all the time', session.get('username'))
return render_template('login.html')
@app.route('/ajax-call')
def ajax_call():
print('fails in edge',session['username'])
return 'data'
@app.route('/login', methods=['POST'])
def do_admin_login():
if request.form['password'] == 'password' and request.form['username'] == 'admin':
session['logged_in'] = True
session['username'] = 'goat'
else:
flash('wrong password!')
return home()
if __name__ == "__main__":
app.secret_key = os.urandom(12)
app.run(debug=True,host='0.0.0.0', port=4000)
login.html
<head>
<script>
function call_me() {
fetch(`/ajax-call`)
.then(function(response) {
return response.json();
})
}
</script>
</head>
{% block body %}
{% if session['logged_in'] %}
You're logged in already!
<td><button class="btn btn-outline-danger btn-sm" onclick="call_me()">Delete</button></td>
{% else %}
<form action="/login" method="POST">
<input type="username" name="username" placeholder="Username">
<input type="password" name="password" placeholder="Password">
<input type="submit" value="Log in">
</form>{% endif %}
{% endblock %}