Changeset 1168
- Timestamp:
- 06/28/06 00:31:28
- Files:
-
- trunk/cherrypy/_cprequest.py (modified) (2 diffs)
- trunk/cherrypy/lib/http.py (modified) (1 diff)
- trunk/cherrypy/test/test_core.py (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/cherrypy/_cprequest.py
r1166 r1168 682 682 683 683 # Transform our header dict into a sorted list of tuples. 684 self.header_list= self.headers.sorted_list()684 h = self.headers.sorted_list() 685 685 686 686 cookie = self.simple_cookie.output() … … 688 688 for line in cookie.split("\n"): 689 689 name, value = line.split(": ", 1) 690 self.header_list.append((name, value)) 691 692 self.header_list = [(k, http.encode_TEXT(v)) for k, v in self.header_list] 690 h.append((name, value)) 691 692 self.header_list = [] 693 for k, v in h: 694 if self.version >= (1, 1): 695 v = http.encode_TEXT(v) 696 # If there are any folds, make sure they are indented. 697 v = v.replace("\n", "\n ") 698 self.header_list.append((k, v)) 699 trunk/cherrypy/lib/http.py
r1166 r1168 185 185 186 186 def encode_TEXT(value): 187 """Encode RFC-2047 TEXT (e.g. u"\u8200" -> "=?utf-8?b?6IiA?=").""" 187 """Encode RFC-2047 TEXT (e.g. u"\u8200" -> "=?utf-8?b?6IiA?="). 188 189 Note that HTTP/1.0 says, "Words of *TEXT may contain octets from 190 character sets other than US-ASCII." and "Recipients of header 191 field TEXT containing octets outside the US-ASCII character 192 set may assume that they represent ISO-8859-1 characters." 193 So don't use this function for encoding HTTP/1.0 values. 194 """ 195 188 196 try: 189 197 value = value.encode("iso-8859-1") trunk/cherrypy/test/test_core.py
r1166 r1168 752 752 self.getPage("/headers/ifmatch", 753 753 [('If-Match', '=?utf-8?q?=E2=84=ABngstr=C3=B6m?=')]) 754 self.assertBody("u'\\u212bngstr\\xf6m'") 754 755 self.assertHeader("ETag", '=?utf-8?b?4oSrbmdzdHLDtm0=?=') 755 self.assertBody("u'\\u212bngstr\\xf6m'") 756 757 # Test a *LONG* RFC-2047-encoded request and response header value 758 c = "=E2=84=ABngstr=C3=B6m" 759 self.getPage("/headers/ifmatch", 760 [('If-Match', '=?utf-8?q?%s?=' % (c * 10))]) 761 self.assertBody("u'%s'" % ('\\u212bngstr\\xf6m' * 10)) 762 self.assertHeader("ETag", 763 '=?utf-8?b?4oSrbmdzdHLDtm3ihKtuZ3N0csO2beKEq25nc3Ryw7Zt4oSrbmdzdHLDtm0=?=' 764 '=?utf-8?b?4oSrbmdzdHLDtm3ihKtuZ3N0csO2beKEq25nc3Ryw7Zt4oSrbmdzdHLDtm0=?=' 765 '=?utf-8?b?4oSrbmdzdHLDtm3ihKtuZ3N0csO2bQ==?=') 756 766 757 767 def testHTTPMethods(self):

