gpt4 book ai didi

Tornado 未正确返回 HTTP 状态消息

转载 作者:可可西里 更新时间:2023-11-01 17:01:17 24 4
gpt4 key购买 nike

我想向我的网络应用程序的用户显示错误。在处理请求时,我可能会提出 HTTPError像这样:

raise tornado.web.HTTPError(403, reason="You're not authorised")

在我的开发环境中运行它时,会产生如下响应状态:

403 You're not authorised

但是当我在生产中运行它时,我得到:

403 Forbidden

更改 serve_traceback and debug options没有帮助:回溯在响应主体中返回,但状态消息仍然只是“禁止访问”。

为什么它在生产中返回错误消息?

Tornado 4.1

最佳答案

您是否在某种可能正在替换此字符串的代理后面运行?

一般来说,您不应该为您关心的任何事情使用 reason 字符串。代理经常取代它,浏览器不会对它做任何事情,并且在 HTTP/2 中它被完全删除。 Tornado 允许自定义此字符串的主要原因是,如果您想使用非标准错误代码,我们必须将 something 放在那里,因此 reason 参数如果您的状态代码不在 httplib 中,则为必填项。

在 Tornado 中,raise HTTPError(status) 将在您只关心状态时使用。当您想发送消息时,请改用此模式:

self.set_status(403)
self.write("You're not authorized")
# or self.render("error.html", reason="You're not authorized"))
return
# or raise tornado.web.Finish() if you're too deep in the stack to return

关于Tornado 未正确返回 HTTP 状态消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33427293/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com