mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	[1.6.x] Fixed #21282 -- Made HttpResponse.serialize_headers accept latin-1
Thanks Raphaël Barrois for the report and the initial patch and
Aymeric Augustin for the review.
Backport of a14f087233 from master.
			
			
This commit is contained in:
		| @@ -128,8 +128,11 @@ class HttpResponseBase(six.Iterator): | ||||
|  | ||||
|     def serialize_headers(self): | ||||
|         """HTTP headers as a bytestring.""" | ||||
|         def to_bytes(val, encoding): | ||||
|             return val if isinstance(val, bytes) else val.encode(encoding) | ||||
|  | ||||
|         headers = [ | ||||
|             ('%s: %s' % (key, value)).encode('us-ascii') | ||||
|             (b': '.join([to_bytes(key, 'ascii'), to_bytes(value, 'latin-1')])) | ||||
|             for key, value in self._headers.values() | ||||
|         ] | ||||
|         return b'\r\n'.join(headers) | ||||
| @@ -140,7 +143,7 @@ class HttpResponseBase(six.Iterator): | ||||
|         __str__ = serialize_headers | ||||
|  | ||||
|     def _convert_to_charset(self, value, charset, mime_encode=False): | ||||
|         """Converts headers key/value to ascii/latin1 native strings. | ||||
|         """Converts headers key/value to ascii/latin-1 native strings. | ||||
|  | ||||
|         `charset` must be 'ascii' or 'latin-1'. If `mime_encode` is True and | ||||
|         `value` value can't be represented in the given charset, MIME-encoding | ||||
| @@ -176,7 +179,7 @@ class HttpResponseBase(six.Iterator): | ||||
|  | ||||
|     def __setitem__(self, header, value): | ||||
|         header = self._convert_to_charset(header, 'ascii') | ||||
|         value = self._convert_to_charset(value, 'latin1', mime_encode=True) | ||||
|         value = self._convert_to_charset(value, 'latin-1', mime_encode=True) | ||||
|         self._headers[header.lower()] = (header, value) | ||||
|  | ||||
|     def __delitem__(self, header): | ||||
|   | ||||
		Reference in New Issue
	
	Block a user