我正在尝试使用标题发送请求:":hello".但是,前导冒号会导致脚本无法正常运行,并发出此回溯:
Traceback (most recent call last):
(为了我的隐私删除了前几行)
File "C:\Python27\lib\site-packages\requests\api.py", line 109, in post return request('post', url, data=data, json=json, **kwargs) File "C:\Python27\lib\site-packages\requests\api.py", line 50, in request response = session.request(method=method, url=url, **kwargs) File "C:\Python27\lib\site-packages\requests\sessions.py", line 468, in request resp = self.send(prep, **send_kwargs) File "C:\Python27\lib\site-packages\requests\sessions.py", line 576, in send r = adapter.send(request, **kwargs) File "C:\Python27\lib\site-packages\requests\adapters.py", line 370, in send timeout=timeout File "C:\Python27\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 559, in urlopen body=body, headers=headers) File "C:\Python27\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 353, in _make_request conn.request(method, url, **httplib_request_kw) File "C:\Python27\lib\httplib.py", line 1057, in request self._send_request(method, url, body, headers) File "C:\Python27\lib\httplib.py", line 1096, in _send_request self.putheader(hdr, value) File "C:\Python27\lib\httplib.py", line 1030, in putheader raise ValueError('Invalid header name %r' % (header,)) ValueError: Invalid header name ':hello'
这有解决方法吗?我的脚本是:
import requests headers = {'user-agent': 'alsotesting', ':hello': 'test'} requests.post("my server", headers=headers)
Gabriel Ilha.. 5
如您的错误所述,:header
这不是有效的HTTP标头名称(您不能以“:”开头标头-请参阅文档)。你应该改变
headers = {'user-agent': 'alsotesting', ':hello': 'test'}
至
headers = {'user-agent': 'alsotesting', 'hello': 'test'}
编辑:HTTP / 2使用以冒号开头的伪标头字段(请参阅文档)。此外,作为解释在这里,你可能会看到一些头开始在Chrome的开发者工具冒号,当Chrome正在使用SPDY跟一个Web服务器,可发生-而且HTTP / 2(这是基于SPDY / 2),其中对应于伪标题。如文档中所述,伪头字段不是HTTP头字段。
总之,标准HTTP协议不允许以冒号开头的标头字段,因此这就是为什么会Invalid header name
出现错误的原因
如您的错误所述,:header
这不是有效的HTTP标头名称(您不能以“:”开头标头-请参阅文档)。你应该改变
headers = {'user-agent': 'alsotesting', ':hello': 'test'}
至
headers = {'user-agent': 'alsotesting', 'hello': 'test'}
编辑:HTTP / 2使用以冒号开头的伪标头字段(请参阅文档)。此外,作为解释在这里,你可能会看到一些头开始在Chrome的开发者工具冒号,当Chrome正在使用SPDY跟一个Web服务器,可发生-而且HTTP / 2(这是基于SPDY / 2),其中对应于伪标题。如文档中所述,伪头字段不是HTTP头字段。
总之,标准HTTP协议不允许以冒号开头的标头字段,因此这就是为什么会Invalid header name
出现错误的原因