0

我有一个在 WSGI 之上编写的大型 Web 系统,它使用 webob 访问表单数据(不涉及任何框架)。随机地,我们会从浏览器(或机器人)中获得未处理的 UnicodeDecodeError 异常,这些异常在查询字符串或 POST 数据中发送不可解码的转义序列。我正在寻找一种不涉及我收到未处理的异常电子邮件的良好默认行为。

我的第一个想法是编写一个站点范围的中间件,该中间件使用返回 400 的异常处理程序访问 webob 请求对象的参数(或者可能去除不可解码的数据)。

其他系统/框架如何处理这个问题?

4

1 回答 1

0

经过一番挖掘,我发现应该在请求上使用 .decode() 方法来创建解码请求。如果失败并出现 UnicodeDecodeError,我会发回 400。例如:

    try:
        req = webob.Request(environ).decode('ascii')
    except UnicodeDecodeError, e:
        return webob.Response(status=400, body="""
            <h1>Bad Request</h1>
            <p>We apologize. Your request includes characters the server
            cannot understand. Please click the back button and
            check your request for non-standard characters like accent
            marks and copy-paste data from word processing
            programs.</p>""")(environ, start_response)
于 2013-04-18T16:04:41.867 回答