You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask启用HTTPS后HTTP请求无法重定向至HTTPS问题排查

Flask启用HTTPS后HTTP请求无法重定向的原因及解决方案

核心原因

当你通过ssl_context参数启动Flask内置服务器时,该服务器只会在指定端口(5051)上监听并处理HTTPS协议的请求。HTTP请求发送到这个端口时,由于协议不匹配,服务器会直接拒绝连接,根本不会将请求传递给Flask的应用逻辑,所以你写的before_request钩子完全不会被触发,也就看不到打印输出。

解决方案

方案1:同时启动HTTP和HTTPS两个Flask服务

通过多线程分别启动两个Flask实例:一个监听HTTP端口(比如5050),专门处理重定向;另一个监听HTTPS端口(5051),处理实际业务逻辑。

示例代码:

from flask import Flask, request, redirect
import threading
import ssl

# 主HTTPS应用
app = Flask(__name__)

# 这里添加你的地图服务路由
@app.route('/')
def map_service():
    return "你的Folium地图页面"

# 专门处理HTTP重定向的应用
http_redirect_app = Flask(__name__)

@http_redirect_app.before_request
def redirect_to_https():
    # 替换协议和端口,将HTTP请求重定向到HTTPS
    new_url = request.url.replace('http://', 'https://', 1).replace(':5050', ':5051', 1)
    return redirect(new_url, code=301)

if __name__ == '__main__':
    # 加载SSL证书
    ssl_context = ssl.SSLContext()
    ssl_context.load_cert_chain('mycert.pem', 'myprivkey.pem')
    
    # 启动HTTPS服务(后台线程)
    threading.Thread(
        target=lambda: app.run(debug=False, host='0.0.0.0', port=5051, ssl_context=ssl_context)
    ).start()
    
    # 启动HTTP重定向服务(主线程)
    http_redirect_app.run(debug=False, host='0.0.0.0', port=5050)

方案2:使用反向代理(推荐生产环境)

生产环境下不建议直接用Flask内置服务器,更推荐用Nginx等反向代理工具处理SSL和重定向:

  1. 让Nginx监听80(HTTP)和443(HTTPS)端口
  2. 将所有HTTP请求重定向到HTTPS
  3. 将HTTPS请求转发到本地运行的Flask服务(无需启用ssl_context)

Nginx配置示例:

# 处理HTTP请求,重定向到HTTPS
server {
    listen 80;
    server_name 你的域名或IP;

    return 301 https://$server_name$request_uri;
}

# 处理HTTPS请求,转发到Flask
server {
    listen 443 ssl;
    server_name 你的域名或IP;

    # 配置SSL证书路径
    ssl_certificate /path/to/mycert.pem;
    ssl_certificate_key /path/to/myprivkey.pem;

    location / {
        proxy_pass http://127.0.0.1:5051;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

此时Flask只需以普通HTTP模式启动:

app.run(debug=False, host='127.0.0.1', port=5051)

内容的提问来源于stack exchange,提问作者Herve Kabla

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 12:15:37