我有一个在WSGI上编写的大型web系统,它使用webob访问表单数据(不涉及框架)。随机地,我们将从浏览器(或机器人)获得未处理的UnicodeDecodeError异常,在查询字符串或POST数据中发送无法解码的转义序列。我正在寻找一个好的默认行为,不涉及我收到未处理的异常电子邮件。
我的第一个想法是编写一个站点范围的中间件,它通过一个异常处理程序访问webob请求对象的参数,该异常处理程序返回400 (或者可能剥离无法解码的数据)。
其他系统/框架如何处理此问题?
发布于 2013-04-19 00:04:42
经过深入研究,我发现应该在一开始就对请求使用.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)https://stackoverflow.com/questions/15692781
复制相似问题