У меня на сервере № 1 работает приложение-колба, доступное по адресу http://flasky.mydomain.com:5000, доступное только внутри сети нашей компании.Моя цель - создать публичный HTTPS-сайт https://foo.mydomain.com, который указывает на это приложение http: // flask.
На сервере № 2 у меня работает Apache, который указывает на этот адрес со следующей конфигурацией.
<VirtualHost *:443>
ServerName foo.mydomain.com
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLHonorCipherOrder on
SSLCipherSuite ...
SSLCertificateFile /path/to/file
SSLCertificateKeyFile /path/to/file
SSLCertificateChainFile /path/to/file
RewriteEngine On
RewriteRule ^/(.*) http://flasky.mydomain.com:5000/$1 [P,L]
</VirtualHost>
В моем приложении для фляги есть такие страницы, как "/index.html", который доступен только для аутентифицированных пользователей, и "/register.html" и "/login.html", которые доступны для анонимных пользователей..
Вызов https://foo.mydomain.com/register.html работает нормально.
Вызов https://foo.mydomain.com/index.html, для которого требуется вошедший в систему пользователь перенаправляет на следующий URL (без httpS): http://foo.mydomain.com/login?next=%2Findex.html
Я не знаю, почему приложение перенаправляет на http: // URL вместо https: //.
Процесс входа в систему моего приложения фляги работает нормально, и я могу вызвать / index.html после успешного входа в систему, см. код ниже:
from flask_login import login_user, logout_user, current_user, login_required
@app.route('/login', methods=['GET', 'POST'])
def login():
if current_user.is_authenticated:
return redirect(url_for('index'))
email = request.form.get('email', '').strip()
password = request.form.get('password', '')
user = User.query.filter_by(email=email).first()
if user is None or not user.check_password(password):
err_msg = _('Login failed')
return render_template('login.html', err_msg=err_msg)
login_user(user)
return render_template('index.html')
Защищенная страница /index.html защищена флагом @login_required в моем коде.
@app.route('/')
@app.route('/index.html')
@login_required
def index():
return render_template('index.html')
Любая идея,почему я не могу вызвать защищенную страницу "/index.html" даже после того, как язалогинен?Когда я звоню https://foo.mydomain.com/index.html после входа в систему, приложение автоматически перенаправляет на http://foo.mydomain.com/login?next=%2Findex.html.