mirror of
https://github.com/encode/django-rest-framework.git
synced 2024-11-28 12:34:00 +03:00
Patch to enable Accept headers in Internet Explorer when an Ajax Library on the client (i.e. jQuery) is sending an XMLHttpRequest
This commit is contained in:
parent
5311cc1012
commit
79f3de9532
|
@ -110,7 +110,8 @@ class Response(SimpleTemplateResponse):
|
||||||
return [request.GET.get(self._ACCEPT_QUERY_PARAM)]
|
return [request.GET.get(self._ACCEPT_QUERY_PARAM)]
|
||||||
elif (self._IGNORE_IE_ACCEPT_HEADER and
|
elif (self._IGNORE_IE_ACCEPT_HEADER and
|
||||||
'HTTP_USER_AGENT' in request.META and
|
'HTTP_USER_AGENT' in request.META and
|
||||||
MSIE_USER_AGENT_REGEX.match(request.META['HTTP_USER_AGENT'])):
|
MSIE_USER_AGENT_REGEX.match(request.META['HTTP_USER_AGENT']) and
|
||||||
|
request.META.get('HTTP_X_REQUESTED_WITH', '') != 'XMLHttpRequest'):
|
||||||
# Ignore MSIE's broken accept behavior and do something sensible instead
|
# Ignore MSIE's broken accept behavior and do something sensible instead
|
||||||
return ['text/html', '*/*']
|
return ['text/html', '*/*']
|
||||||
elif 'HTTP_ACCEPT' in request.META:
|
elif 'HTTP_ACCEPT' in request.META:
|
||||||
|
|
|
@ -53,7 +53,18 @@ class UserAgentMungingTest(TestCase):
|
||||||
resp = self.view(req)
|
resp = self.view(req)
|
||||||
resp.render()
|
resp.render()
|
||||||
self.assertEqual(resp['Content-Type'], 'text/html')
|
self.assertEqual(resp['Content-Type'], 'text/html')
|
||||||
|
|
||||||
|
def test_dont_munge_msie_with_x_requested_with_header(self):
|
||||||
|
"""Send MSIE user agent strings, and an X-Requested-With header, and
|
||||||
|
ensure that we get a JSON response if we set a */* Accept header."""
|
||||||
|
for user_agent in (MSIE_9_USER_AGENT,
|
||||||
|
MSIE_8_USER_AGENT,
|
||||||
|
MSIE_7_USER_AGENT):
|
||||||
|
req = self.req.get('/', HTTP_ACCEPT='*/*', HTTP_USER_AGENT=user_agent, HTTP_X_REQUESTED_WITH='XMLHttpRequest')
|
||||||
|
resp = self.view(req)
|
||||||
|
resp.render()
|
||||||
|
self.assertEqual(resp['Content-Type'], 'application/json')
|
||||||
|
|
||||||
def test_dont_rewrite_msie_accept_header(self):
|
def test_dont_rewrite_msie_accept_header(self):
|
||||||
"""Turn off _IGNORE_IE_ACCEPT_HEADER, send MSIE user agent strings and ensure
|
"""Turn off _IGNORE_IE_ACCEPT_HEADER, send MSIE user agent strings and ensure
|
||||||
that we get a JSON response if we set a */* accept header."""
|
that we get a JSON response if we set a */* accept header."""
|
||||||
|
|
Loading…
Reference in New Issue
Block a user