Skip to content

Commit 9ebd5a2

Browse files
author
Robert Kirberich
committed
Update existing vary headers in response instead of overwriting them.
Previously, any existing vary headers would simply be wiped out by DRF. Using patch_vary_headers assures that existing headers remain.
1 parent 5e6b233 commit 9ebd5a2

File tree

1 file changed

+6
-0
lines changed

1 file changed

+6
-0
lines changed

rest_framework/views.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
from django.http import Http404
1010
from django.http.response import HttpResponseBase
1111
from django.utils import six
12+
from django.utils.cache import cc_delim_re, patch_vary_headers
1213
from django.utils.encoding import smart_text
1314
from django.utils.translation import ugettext_lazy as _
1415
from django.views.decorators.csrf import csrf_exempt
@@ -414,6 +415,11 @@ def finalize_response(self, request, response, *args, **kwargs):
414415
response.accepted_media_type = request.accepted_media_type
415416
response.renderer_context = self.get_renderer_context()
416417

418+
# Add new vary headers to the response instead of overwriting.
419+
vary_headers = self.headers.pop('Vary', None)
420+
if vary_headers is not None:
421+
patch_vary_headers(response, cc_delim_re.split(vary_headers))
422+
417423
for key, value in self.headers.items():
418424
response[key] = value
419425

0 commit comments

Comments
 (0)