【问题标题】:Python ValueError: Invalid header name b':authorityPython ValueError:无效的标头名称b':权限
【发布时间】:2017-09-15 03:27:19
【问题描述】:

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

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)

【问题讨论】:

  • 只需从标题中的键中删除“:”
  • @Acepcs 但是headers没有“:”,无法请求和获取正确的web。
  • 对不起,很难理解你在说什么。看来您需要将每个标题的 ':authority' 更改为 'authority'
  • @PeterGibson 谢谢
  • 这个答案:stackoverflow.com/a/34372413/12242023 为我解决了。

标签: python python-3.x header python-requests pyspider


【解决方案1】:
import httplib

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

【讨论】:

  • 这如何回答这个问题?请编辑您的答案并详细说明。
  • 重写httplib的正则表达式。 _is_legal_header_name 对不起,
  • 对于 Python 3.7,它是 import http.client http.client._is_legal_header_name = re.compile(rb'[^\s][^:\r\n]*').fullmatch
  • 我在拨打Github(token).get_user() 时收到Invalid header value b'token ghp<ghtoken>\n'。我有lf 作为令牌文件的line ending。开头的b 是什么?
猜你喜欢
  • 2016-03-26
  • 1970-01-01
  • 2022-01-21
  • 2017-10-24
  • 1970-01-01
  • 2018-09-04
  • 2021-01-13
  • 1970-01-01
相关资源
最近更新 更多