forked from orbit-oss/flask
Added better error reporting for unicode errors in sessions
This commit is contained in:
parent
8339cb3508
commit
2b885ce4dc
2 changed files with 17 additions and 0 deletions
|
|
@ -10,6 +10,12 @@
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
class UnexpectedUnicodeError(AssertionError, UnicodeError):
|
||||||
|
"""Raised in places where we want some better error reporting for
|
||||||
|
unexpected unicode or binary data.
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
class DebugFilesKeyError(KeyError, AssertionError):
|
class DebugFilesKeyError(KeyError, AssertionError):
|
||||||
"""Raised from request.files during debugging. The idea is that it can
|
"""Raised from request.files during debugging. The idea is that it can
|
||||||
provide a better error message than just a generic KeyError/BadRequest.
|
provide a better error message than just a generic KeyError/BadRequest.
|
||||||
|
|
|
||||||
|
|
@ -66,6 +66,14 @@ class TaggedJSONSerializer(object):
|
||||||
return {' d': http_date(value)}
|
return {' d': http_date(value)}
|
||||||
elif isinstance(value, dict):
|
elif isinstance(value, dict):
|
||||||
return dict((k, _tag(v)) for k, v in value.iteritems())
|
return dict((k, _tag(v)) for k, v in value.iteritems())
|
||||||
|
elif isinstance(value, str):
|
||||||
|
try:
|
||||||
|
return unicode(value)
|
||||||
|
except UnicodeError:
|
||||||
|
raise UnexpectedUnicodeError(u'A byte string with '
|
||||||
|
u'non-ASCII data was passed to the session system '
|
||||||
|
u'which can only store unicode strings. Consider '
|
||||||
|
u'base64 encoding your string (String was %r)' % value)
|
||||||
return value
|
return value
|
||||||
return json.dumps(_tag(value), separators=(',', ':'))
|
return json.dumps(_tag(value), separators=(',', ':'))
|
||||||
|
|
||||||
|
|
@ -292,3 +300,6 @@ class SecureCookieSessionInterface(SessionInterface):
|
||||||
response.set_cookie(app.session_cookie_name, val,
|
response.set_cookie(app.session_cookie_name, val,
|
||||||
expires=expires, httponly=httponly,
|
expires=expires, httponly=httponly,
|
||||||
domain=domain, path=path, secure=secure)
|
domain=domain, path=path, secure=secure)
|
||||||
|
|
||||||
|
|
||||||
|
from flask.debughelpers import UnexpectedUnicodeError
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue