z0r*_*z0r 1 http tornado haproxy python-3.x
我想向我的 Web 应用程序的用户显示错误。在处理请求时,我可能会提出HTTPError这样的问题:
raise tornado.web.HTTPError(403, reason="You're not authorised")
Run Code Online (Sandbox Code Playgroud)
在我的开发环境中运行它时,会产生如下响应状态:
403 You're not authorised
Run Code Online (Sandbox Code Playgroud)
但是当我在生产中运行它时,我得到:
403 Forbidden
Run Code Online (Sandbox Code Playgroud)
更改serve_traceback和debug选项无济于事:在响应正文中返回回溯,但状态消息仍然只是“禁止”。
为什么它在生产中返回错误消息?
龙卷风 4.1
您是否在某种可能会替换此字符串的代理后面运行?
一般来说,您不应该将reason字符串用于您关心的任何事情。代理经常取代它,浏览器不会用它做任何事情,在 HTTP/2 中它被完全删除。Tornado 允许自定义此字符串的主要原因是,如果您想使用非标准错误代码,我们必须在那里放一些东西,因此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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
714 次 |
| 最近记录: |