mirror of
				https://github.com/encode/django-rest-framework.git
				synced 2025-11-04 09:57:55 +03:00 
			
		
		
		
	Merge pull request #223 from greylurk/ie-headers
Implements Accept headers from IE in the case describe in Issue 215
This commit is contained in:
		
						commit
						17532310a2
					
				| 
						 | 
					@ -274,7 +274,8 @@ class ResponseMixin(object):
 | 
				
			||||||
            accept_list = [request.GET.get(self._ACCEPT_QUERY_PARAM)]
 | 
					            accept_list = [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
 | 
				
			||||||
            accept_list = ['text/html', '*/*']
 | 
					            accept_list = ['text/html', '*/*']
 | 
				
			||||||
        elif 'HTTP_ACCEPT' in request.META:
 | 
					        elif 'HTTP_ACCEPT' in request.META:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -50,6 +50,16 @@ class UserAgentMungingTest(TestCase):
 | 
				
			||||||
            resp = self.view(req)
 | 
					            resp = self.view(req)
 | 
				
			||||||
            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)
 | 
				
			||||||
 | 
					            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