相关疑难解决方法(0)

uvicorn [fastapi] python 同时运行 HTTP 和 HTTPS

我正在尝试使用 SSL 运行 fastapi 应用程序。

我正在使用 uvicorn 运行该应用程序。

我可以使用 HTTP 在端口 80 上运行服务器,

if __name__ == '__main__':
    uvicorn.run("main:app", port=80, host='0.0.0.0', reload = True, reload_dirs = ["html_files"])
Run Code Online (Sandbox Code Playgroud)

要使用 HTTPS 运行端口,我执行以下操作:

if __name__ == '__main__':
    uvicorn.run("main:app", port=443, host='0.0.0.0', reload = True, reload_dirs = ["html_files"], ssl_keyfile="/etc/letsencrypt/live/my_domain/privkey.pem", ssl_certfile="/etc/letsencrypt/live/my_domain/fullchain.pem")
Run Code Online (Sandbox Code Playgroud)

我如何运行两者或简单地集成 https 重定向?

注意:这是在我不想使用 nginx 的服务器上进行的设置,我知道如何使用 nginx 来实现 https 重定向。

ssl http-redirect python-3.x fastapi uvicorn

16
推荐指数
2
解决办法
4万
查看次数

Jinja2 模板中 url_for 创建的 FastAPI 链接使用 HTTP 而不是 HTTPS

我将 Flask 中由 waitress 提供的应用程序迁移到由 uvicorn 提供的 FastAPI,但我无法强制链接(由 index.html 模板内的 url_for 生成)使用 HTTPS 而不是 HTTP。

我和女服务员一起使用:

from waitress import serve
import flask_app

PORT=5000
HOST_IP_ADDRESS='0.0.0.0'

serve(flask_app.app, host=HOST_IP_ADDRESS, port=PORT, url_scheme="https")
Run Code Online (Sandbox Code Playgroud)

对于 uvicorn,我尝试使用 proxy_headers,但这不起作用。我在index.html中使用了解决方法

<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
Run Code Online (Sandbox Code Playgroud)

它正确地从静态文件加载了 style.css,但到另一个端点的链接仍然使用 HTTP。

有没有一种简单的方法可以强制 url_for 创建的所有链接都使用 HTTPS?

https jinja2 fastapi uvicorn

3
推荐指数
1
解决办法
5003
查看次数

标签 统计

fastapi ×2

uvicorn ×2

http-redirect ×1

https ×1

jinja2 ×1

python-3.x ×1

ssl ×1