mirror of
https://github.com/python/cpython.git
synced 2025-11-01 14:11:41 +00:00
Bug #1459963: properly capitalize HTTP header names.
This commit is contained in:
parent
cf0c1729dc
commit
0619a329e8
4 changed files with 29 additions and 26 deletions
|
|
@ -263,11 +263,11 @@ def is_unverifiable(self):
|
|||
|
||||
def add_header(self, key, val):
|
||||
# useful for something like authentication
|
||||
self.headers[key.capitalize()] = val
|
||||
self.headers[key.title()] = val
|
||||
|
||||
def add_unredirected_header(self, key, val):
|
||||
# will not be added to a redirected request
|
||||
self.unredirected_hdrs[key.capitalize()] = val
|
||||
self.unredirected_hdrs[key.title()] = val
|
||||
|
||||
def has_header(self, header_name):
|
||||
return (header_name in self.headers or
|
||||
|
|
@ -286,7 +286,7 @@ def header_items(self):
|
|||
class OpenerDirector:
|
||||
def __init__(self):
|
||||
client_version = "Python-urllib/%s" % __version__
|
||||
self.addheaders = [('User-agent', client_version)]
|
||||
self.addheaders = [('User-Agent', client_version)]
|
||||
# manage the individual handlers
|
||||
self.handlers = []
|
||||
self.handle_open = {}
|
||||
|
|
@ -675,7 +675,7 @@ def proxy_open(self, req, proxy, type):
|
|||
if user and password:
|
||||
user_pass = '%s:%s' % (unquote(user), unquote(password))
|
||||
creds = base64.encodestring(user_pass).strip()
|
||||
req.add_header('Proxy-authorization', 'Basic ' + creds)
|
||||
req.add_header('Proxy-Authorization', 'Basic ' + creds)
|
||||
hostport = unquote(hostport)
|
||||
req.set_proxy(hostport, proxy_type)
|
||||
if orig_type == proxy_type:
|
||||
|
|
@ -819,7 +819,7 @@ def http_error_401(self, req, fp, code, msg, headers):
|
|||
|
||||
class ProxyBasicAuthHandler(AbstractBasicAuthHandler, BaseHandler):
|
||||
|
||||
auth_header = 'Proxy-authorization'
|
||||
auth_header = 'Proxy-Authorization'
|
||||
|
||||
def http_error_407(self, req, fp, code, msg, headers):
|
||||
# http_error_auth_reqed requires that there is no userinfo component in
|
||||
|
|
@ -1022,20 +1022,20 @@ def do_request_(self, request):
|
|||
|
||||
if request.has_data(): # POST
|
||||
data = request.get_data()
|
||||
if not request.has_header('Content-type'):
|
||||
if not request.has_header('Content-Type'):
|
||||
request.add_unredirected_header(
|
||||
'Content-type',
|
||||
'Content-Type',
|
||||
'application/x-www-form-urlencoded')
|
||||
if not request.has_header('Content-length'):
|
||||
if not request.has_header('Content-Length'):
|
||||
request.add_unredirected_header(
|
||||
'Content-length', '%d' % len(data))
|
||||
'Content-Length', '%d' % len(data))
|
||||
|
||||
scheme, sel = splittype(request.get_selector())
|
||||
sel_host, sel_path = splithost(sel)
|
||||
if not request.has_header('Host'):
|
||||
request.add_unredirected_header('Host', sel_host or host)
|
||||
for name, value in self.parent.addheaders:
|
||||
name = name.capitalize()
|
||||
name = name.title()
|
||||
if not request.has_header(name):
|
||||
request.add_unredirected_header(name, value)
|
||||
|
||||
|
|
@ -1217,7 +1217,7 @@ def open_local_file(self, req):
|
|||
modified = email.Utils.formatdate(stats.st_mtime, usegmt=True)
|
||||
mtype = mimetypes.guess_type(file)[0]
|
||||
headers = mimetools.Message(StringIO(
|
||||
'Content-type: %s\nContent-length: %d\nLast-modified: %s\n' %
|
||||
'Content-Type: %s\nContent-Length: %d\nLast-Modified: %s\n' %
|
||||
(mtype or 'text/plain', size, modified)))
|
||||
if host:
|
||||
host, port = splitport(host)
|
||||
|
|
@ -1272,9 +1272,9 @@ def ftp_open(self, req):
|
|||
headers = ""
|
||||
mtype = mimetypes.guess_type(req.get_full_url())[0]
|
||||
if mtype:
|
||||
headers += "Content-type: %s\n" % mtype
|
||||
headers += "Content-Type: %s\n" % mtype
|
||||
if retrlen is not None and retrlen >= 0:
|
||||
headers += "Content-length: %d\n" % retrlen
|
||||
headers += "Content-Length: %d\n" % retrlen
|
||||
sf = StringIO(headers)
|
||||
headers = mimetools.Message(sf)
|
||||
return addinfourl(fp, headers, req.get_full_url())
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue