Python flask错误代码400,消息错误的请求版本

时间:2019-11-17 16:52:29

标签: python python-3.x flask

网站代码

from flask import *

app = Flask(__name__)


@app.route("/<name>")
def user(name):
    return f"Hello {name}!"


@app.route("/")
def home():
return render_template("index.html")


@app.route("/admin")
def admin():
    return redirect(url_for("home"))


if __name__ == "__main__":
    app.run()

如果我去http://127.0.0.1:5000/没有问题,但是当我去https://127.0.0.1:5000/(这次是https而不是http)时,出现以下错误

127.0.0.1 - - [17/Nov/2019 17:43:25] code 400, message Bad request version ('y\x03Ðã\x80¨R¾3\x8eܽ\x90Ïñ\x95®¢Ò\x97\x90<Ù¦\x00$\x13\x01\x13\x03\x13\x02À+À/̨̩À,À0À')

错误code 400, message Bad request version基本上是我所期望的,因为我没有设置SSL,也没有声明网站在收到https请求时应该做什么。我很好奇的发现奇怪的符号是什么意思(y \x03Ð....等)。这涉及到多个问题,例如:它们来自何处? python代码是否尝试访问没有特定数据的随机内存位置?数据是否只是控制台无法处理的格式?这是什么意思?你明白了。

2 个答案:

答案 0 :(得分:1)

您缺少 ssl_context 中的 app.run(),它将 Flask 配置为在支持 HTTPS 的情况下运行。

this article about it

如果这只是为了测试,您可以使用 adhoc 模式。

if __name__ == "__main__":
    app.run(ssl_context="adhoc")

答案 1 :(得分:-1)

修复你的导入不那样做

from flask import redirect, Flask, render_template, url_for

app = Flask(__name__)


@app.route("/<name>")
def user(name):
    return f"Hello {name}!"


@app.route("/")
def home():
    return render_template("index.html")


@app.route("/admin")
def admin():
    return redirect(url_for("home"))


if __name__ == "__main__":
    app.run()

导入只有你需要的

from flask import redirect, Flask, render_template, url_for