Python ValueError:无效的标头名称 b':authority

问题描述 投票:0回答:1

我看到“:”是错误的,但我找不到解决它的方法。

ValueError: Invalid header name b':authority'

这是错误:

File "tmall.py", line 23, in get_url
response = sessions.get(url=url,headers =headers)

File "E:\python\lib\site-packages\requests\sessions.py", line 501, in get
return self.request('GET', url, **kwargs)

File "E:\python\lib\site-packages\requests\sessions.py", line 488, in request
resp = self.send(prep, **send_kwargs)

File "E:\python\lib\site-packages\requests\sessions.py", line 609, in send
r = adapter.send(request, **kwargs)

File "E:\python\lib\site-packages\requests\adapters.py", line 423, in send
timeout=timeout

File "E:\python\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 600, in urlopen
chunked=chunked)

File "E:\python\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 356, in _make_request
conn.request(method, url, **httplib_request_kw)

File "E:\python\lib\http\client.py", line 1239, in request
self._send_request(method, url, body, headers, encode_chunked)

File "E:\python\lib\http\client.py", line 1280, in _send_request
self.putheader(hdr, value)

File "E:\python\lib\http\client.py", line 1207, in putheader
raise ValueError('Invalid header name %r' % (header,))

这是代码:

import requests
headers = {
    ':authority':'list.tmall.com',
    ':method':'GET',
    ':path':path}
sessions = requests.session();
response = sessions.get(url=url,headers =headers)
python python-3.x header python-requests pyspider
1个回答
1
投票

问题的作者明白他的标题名称的开头(

:
)就是问题所在。 看来他坚持使用
:
作为标题名称的一部分。 这可以通过使用以下代码覆盖 httplib 接受的合法标头名称来完成:

import httplib
    
httplib._is_legal_header_name = re.compile(r':|\A[^:\s][^:\r\n]*\Z').match

注意:通常这可能不是一个好主意。 假设问题的作者有非常具体的需求,并且知道为什么这是唯一/最好的解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.