[英]Flask-Python redirection to https The connection was reset
我是一个新的Flask用户,我有一个问题。 我想将所有网址从http重定向到https,但我遇到此错误:
连接被重置
这是我的Flask代码:
#! /usr/bin/python
# -*- coding:utf-8 -*-
from flask import *
from OpenSSL import SSL
import psycopg2
import os
from datetime import timedelta
import sys
from flask_sslify import SSLify
reload(sys)
sys.setdefaultencoding('utf8')
db_conn = psycopg2.connect("dbname=billjobs host=192.168.42.96 port=50434 user=username password=password")
app = Flask(__name__)
db = db_conn.cursor()
app.permanent_session_lifetime = timedelta(seconds=900)
sslify = SSLify(app)
app.secret_key='\xatYK\x1ba\x1dz\xa6-D\x9d\x97\x83\xfa\xcf\xcbd\xfa\xfb\x1a|\x08\x1af'
context = ('ssl.crt','ssl.key')
@app.route('/')
def pre_log():
return render_template('index.html')
if __name__ == '__main__':
app.run(host="192.168.42.186", ssl_context=context, debug=False)
如果我直接输入地址https://192.168.42.186:5000它可以工作,但只使用http而不是
谢谢你提前帮助我
您现在无法使用ssl_context
和Werkzung
(Flask的默认服务器)执行此操作。 2014年提出并拒绝了允许此操作的功能: 自动http到https重定向 ; 理由是:
这需要运行另一个HTTP服务器。 Werkzeug不具备这一能力,IMO超出范围。 run_simple只应该用于开发。
那么正在发生的事情是你的Flask应用程序调用下面的run_simple
,传递ssl_context
和其他一些变量。 只要您使用ssl_context
, ssl_context
对您的路由没有影响,因为此变量的唯一存在使Werkzung主机仅使用https架构。 要从http重定向到https,您需要设置另一台服务器,监听http并重定向到https或迁移到其他更高级的服务器,以便轻松进行重定向。
我建议迁移到Apache或gunicorn。 Flask提供有关部署的全面说明: 部署选项 。 请记住,Flask(Werkzung)的内置服务器不适合制作,因为Flask的作者写道:
虽然重量轻且易于使用,但Flask的内置服务器不适合生产,因为它不能很好地扩展,默认情况下一次只能提供一个请求。
使用Apache,您可以使用VirtualHost规则重定向所有http请求,在80处监听:
<VirtualHost *:80>
ServerName mysite.example.com
DocumentRoot /usr/local/apache2/htdocs
Redirect /secure https://mysite.example.com/secure
</VirtualHost>
有关详细信息,请参阅重定向请求SSL Apache wiki。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.