【问题标题】:Python flask error code 400, message Bad request versionPython烧瓶错误代码400,消息Bad request version
【发布时间】:2019-11-17 16:52:29
【问题描述】:

网站代码

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 代码是否尝试访问没有特定数据的随机内存位置?数据是否只是控制台无法处理的格式?这是什么意思?你明白了。

【问题讨论】:

  • 猜测,数据是浏览器作为 https 消息的开头发送的内容。服务器尝试将其解释为 http GET,不能,并返回 400 Bad Request 和错误请求数据。

标签: python python-3.x flask


【解决方案1】:

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

this article about it

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-06
    • 1970-01-01
    • 2020-01-25
    • 2016-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多