thi*_*one 2 python http urllib2
我正在尝试访问REST API.
我可以使用Curl/REST Client(UI工具),启用抢先身份验证.
但是,使用urllib2,它似乎默认不支持这个,我找不到打开它的方法.
谢谢 :)
这是一个简单的Preemptive HTTP基本auth处理程序,基于来自的代码urllib2.HTTPBasicAuthHandler.它可以以完全相同的方式使用,除了Authorization标题将添加到具有匹配URL的每个请求.请注意,此处理程序应与a一起使用HTTPPasswordMgrWithDefaultRealm.那是因为WWW-Authenticate自己先发制人,因此没有领域可以回到挑战中.
class PreemptiveBasicAuthHandler(urllib2.BaseHandler):
def __init__(self, password_mgr=None):
if password_mgr is None:
password_mgr = urllib2.HTTPPasswordMgrWithDefaultRealm()
self.passwd = password_mgr
self.add_password = self.passwd.add_password
def http_request(self,req):
uri = req.get_full_url()
user, pw = self.passwd.find_user_password(None,uri)
#logging.debug('ADDING REQUEST HEADER for uri (%s): %s:%s',uri,user,pw)
if pw is None: return req
raw = "%s:%s" % (user, pw)
auth = 'Basic %s' % base64.b64encode(raw).strip()
req.add_unredirected_header('Authorization', auth)
return req
Run Code Online (Sandbox Code Playgroud)