Python: request.has_header(header) 总是 returns 错误
Python: request.has_header(header) always returns false
使用 python 3.6 中的 urllib,我创建了一个请求并对其应用了 headers。但是,Python 似乎完全忽略了该指令,当我 运行
req.has_header('Content-Type')
结果为假。这也适用于其他 header,但 'Connection' 除外。有趣的是,'connection' returns 也是假的。我一直无法找到一个很好的资源来说明如何在 Python 中精确地声明 headers 并且一直有效(并且 Python 显然是 case-sensitive 关于 header 名字),所以如果有人有任何建议,我很想听听他们的建议!
我的相关来源是:
head = {
'content-type': 'application/x-www-form-urlencoded',
'connection': 'keep-alive',
'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.47 Safari/537.36'
}
req = Request(url, post_bytes, head)
print(req.has_header('content-type')
用 'content-type' 替换任何其他给定的 header,结果仍然是错误的。它几乎就像默认的 python 请求不包含 header 一样,但是......肯定不会是这样吗?
感谢任何见解!
看看这个:
urllib2.py
def add_header(self, key, val):
# useful for something like authentication
self.headers[key.capitalize()] = val
现在,由于设置 headers 与对它们中的每一个调用 add_header
相同,您可以看到正在发生的事情是 urllib 将每个键都大写。所以你的 header 正好在这个键下可用:Content-type
.
不要问我为什么要这样做。我不知道。
Headers 不 匹配 case-insensitive。 headers 添加规范化为大写字符串(首字母大写,其余字母小写),因此测试 Content-type
有效:
>>> list(req.headers)
['Content-type', 'Connection', 'User-agent']
>>> req.has_header('Content-type')
True
是的,这过于简单,但足以满足模块中 headers 的内部使用。
你试过了吗(注意'type'是小写):
req.has_header('Content-type')
如果你使用 req.header_items(),你可以看到 header 键的第一个字母(并且只有第一个字母)大写。
使用 python 3.6 中的 urllib,我创建了一个请求并对其应用了 headers。但是,Python 似乎完全忽略了该指令,当我 运行
req.has_header('Content-Type')
结果为假。这也适用于其他 header,但 'Connection' 除外。有趣的是,'connection' returns 也是假的。我一直无法找到一个很好的资源来说明如何在 Python 中精确地声明 headers 并且一直有效(并且 Python 显然是 case-sensitive 关于 header 名字),所以如果有人有任何建议,我很想听听他们的建议!
我的相关来源是:
head = {
'content-type': 'application/x-www-form-urlencoded',
'connection': 'keep-alive',
'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.47 Safari/537.36'
}
req = Request(url, post_bytes, head)
print(req.has_header('content-type')
用 'content-type' 替换任何其他给定的 header,结果仍然是错误的。它几乎就像默认的 python 请求不包含 header 一样,但是......肯定不会是这样吗?
感谢任何见解!
看看这个:
urllib2.py
def add_header(self, key, val):
# useful for something like authentication
self.headers[key.capitalize()] = val
现在,由于设置 headers 与对它们中的每一个调用 add_header
相同,您可以看到正在发生的事情是 urllib 将每个键都大写。所以你的 header 正好在这个键下可用:Content-type
.
不要问我为什么要这样做。我不知道。
Headers 不 匹配 case-insensitive。 headers 添加规范化为大写字符串(首字母大写,其余字母小写),因此测试 Content-type
有效:
>>> list(req.headers)
['Content-type', 'Connection', 'User-agent']
>>> req.has_header('Content-type')
True
是的,这过于简单,但足以满足模块中 headers 的内部使用。
你试过了吗(注意'type'是小写):
req.has_header('Content-type')
如果你使用 req.header_items(),你可以看到 header 键的第一个字母(并且只有第一个字母)大写。