def make_request_headers(self, method, host, headers, cookies):
_headers = []
if not headers.get('host'):
_headers.append('Host: ' + host + (':443' if method.lower() == 'connect' else ''))
if method.lower() == 'post' and not self.data:
_headers.append('Content-Length: 0')
if self.data:
data = self.make_request_data(self.data)
_headers.append('Content-Length: {}'.format(len(data.encode('utf-8'))))
if isinstance(self.data, dict) and not headers.get('Content-Type'):
_headers.append('Content-Type: application/x-www-form-urlencoded')
# add cookies
if cookies:
if isinstance(cookies, (DictCookie, SimpleCookie)):
_cookies = []
for k in cookies:
# TODO, path ?
if isinstance(cookies[k], Morsel):
v = cookies[k].value
else:
v = cookies[k]
_cookies.append('{}={};'.format(k, v))
cookie = 'Cookie: ' + ' '.join(_cookies)
_headers.append(cookie)
elif isinstance(cookies, dict):
_cookies = []
for k, v in cookies.items():
_cookies.append('{}={};'.format(k, v))
cookie = 'Cookie: ' + ' '.join(_cookies)
_headers.append(cookie)
# make headers
for k, v in headers.items():
_headers.append(k + ': ' + v)
return '\r\n'.join(_headers)
评论列表
文章目录