Python3.9的http.client.py下的HTTPMessage类中的方法getallmatchingheaders的bug修复建议
在官方网站已经提交相关issue,不过目前看好像还没有修复。具体的bug位置为:
http文件夹下的client.py文件,代码位置为:类HTTPMessage下的方法getallmatchingheaders
源代码如下:
def getallmatchingheaders(self, name): """Find all header lines matching a given header name. Look through the list of headers and find all lines matching a given header name (and their continuation lines). A list of the lines is returned, without interpretation. If the header does not occur, an empty list is returned. If the header occurs multiple times, all occurrences are returned. Case is not important in the header name. """ name = name.lower() + ':' n = len(name) lst = [] hit = 0 for line in self.keys(): if line[:n].lower() == name: hit = 1 elif not line[:1].isspace(): hit = 0 if hit: lst.append(line) return lst
修改后代码如下:
1 def getallmatchingheaders(self, name): 2 """Find all header lines matching a given header name. 3 4 Look through the list of headers and find all lines matching a given 5 header name (and their continuation lines). A list of the lines is 6 returned, without interpretation. If the header does not occur, an 7 empty list is returned. If the header occurs multiple times, all 8 occurrences are returned. Case is not important in the header name. 9 10 """ 11 name = name.lower() 12 n = len(name) 13 lst = [] 14 hit = 0 15 for line,value in self.items(): 16 if line[:n].lower() == name: 17 hit = 1 18 elif not line[:1].isspace(): 19 hit = 0 20 if hit: 21 lst.append(line+':'+value) 22 return lst