Fix ident format when using HTTP_X_FORWARDED_FOR

If NUM_PROXIES setting is set to None,
HTTP_X_FORWARDED_FOR might be used as is, which
might contain spaces and cause errors on
cache backends like memcached.
This commit is contained in:
José Padilla 2015-01-11 10:55:56 -04:00 committed by José Padilla
parent e9ac1bb78a
commit d6d08db0dd

View File

@ -35,7 +35,7 @@ class BaseThrottle(object):
client_addr = addrs[-min(num_proxies, len(xff))]
return client_addr.strip()
return xff if xff else remote_addr
return ''.join(xff.split()) if xff else remote_addr
def wait(self):
"""
@ -173,12 +173,6 @@ class AnonRateThrottle(SimpleRateThrottle):
if request.user.is_authenticated():
return None # Only throttle unauthenticated requests.
ident = request.META.get('HTTP_X_FORWARDED_FOR')
if ident is None:
ident = request.META.get('REMOTE_ADDR')
else:
ident = ''.join(ident.split())
return self.cache_format % {
'scope': self.scope,
'ident': self.get_ident(request)