get red of unwanted vary headers

This commit is contained in:
Laura Klünder 2017-10-24 21:03:56 +02:00
parent 0fbe1eb9bf
commit 153bad00e1
2 changed files with 42 additions and 0 deletions

View file

@ -0,0 +1,40 @@
import re
from functools import wraps
class NoLanguageMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
response = self.get_response(request)
if not getattr(response, 'no_language', False):
return response
if not getattr(response, 'keep_content_language', False):
del response['Content-Language']
if not response.has_header('Vary'):
return response
vary = tuple(s for s in re.split(r'\s*,\s*', response['Vary']) if s.lower() != 'accept-language')
if vary:
response['Vary'] = ', '.join(vary)
else:
del response['Vary']
return response
def no_language(keep_content_language=False):
def decorator(func):
@wraps(func)
def wrapper(*args, **kwargs):
response = func(*args, **kwargs)
response.no_language = True
response.keep_content_language = keep_content_language
return response
return wrapper
return decorator

View file

@ -10,11 +10,13 @@ from django.shortcuts import get_object_or_404
from shapely.geometry import box
from c3nav.mapdata.cache import MapHistory
from c3nav.mapdata.middleware import no_language
from c3nav.mapdata.models import Level, MapUpdate, Source
from c3nav.mapdata.render.base import get_render_level_ids
from c3nav.mapdata.render.svg import SVGRenderer
@no_language()
def tile(request, level, zoom, x, y, format):
zoom = int(zoom)
if not (0 <= zoom <= 10):