Python urllib2.Request.get_header 文档在哪里?

2 投票
1 回答
2555 浏览
提问于 2025-04-16 14:09

我正在开发一个库,这个库需要对urllib2.Request实例进行预处理(使用urllib2.BaseHandler.xxx_request回调)。其中一些预处理程序需要检查提供的urllib2.Request实例中的头部信息。

我发现官方的Python文档只列出了添加头部和检查头部是否存在的方法。不过,有一个没有文档说明的urllib2.Request.get_header方法,但它似乎有一些小问题。例如,它会改变多词头部的大小写:

from urllib2 import Request
req = Request('http://www.example.com')
req.add_header('Content-Type', 'application/x-www-form-urlencoded')

req.get_header('Content-Type') # Produces nothing
req.get_header('Content-type') # Produces 'application/x-www-form-urlencoded'

那么,get_header这个方法有没有官方支持或文档说明呢?如果没有,是否有更好的方法来读取urllib2.Request实例中的头部值?

1 个回答

4

我相信 get_header 是官方支持的,但我在文档中找不到相关的说明。

关于你提到的“get_header 返回 None”的问题,查看 urllib2.py 的源代码,发现 add_header 方法在保存头部的键值对之前,会先调用 key.capitalize(),这就是为什么 get_header('Content-type') 能正常工作,而其他形式却不行的原因:

class Request:
    def add_header(self, key, val):
        self.headers[key.capitalize()] = val

>>> 'content-type'.capitalize()
'Content-type'

撰写回答