【问题标题】:how to request authentication url only once, not twice, with python's urllib2 library如何使用 python 的 urllib2 库只请求一次身份验证 url,而不是两次
【发布时间】:2011-04-06 09:28:49
【问题描述】:

通常,我们使用python urllib2库请求一个认证url,用法如this page描述,但这会导致服务器请求2个,第一个响应401错误,然后第二个是客户端将用户名/密码编码为身份验证标头并再次请求。但是,如果您确实知道领域和(用户名、密码),则您只能直接访问该 url 一次。我可以通过将身份验证信息编码到请求标头中来做到这一点,它只请求一次,但我不能用 HTTPPasswordMgrWithDefaultRealm 和相关类来做到这一点。

  • 只有一次请求代码:

    import urllib2, base64
    url = 'http://xxxx'
    username = 'jpx'
    passwd = 'jpx123'
    b64str = base64.encodestring('%s:%s' % (username, passwd))
    
    req = urllib2.Request(url)
    auth = 'Basic %s' % b64str
    req.add_header('Authorization', auth)
    
    try:
        opener = urllib2.urlopen(req)
    except IOError, e:
        print str(e)
    
    print opener.read()
    

【问题讨论】:

    标签: python authentication urllib2


    【解决方案1】:

    是的,urllib 的密码管理器就是这样工作的。它仅在从服务器接收到401 后发送身份验证信息。您可以对许多内容进行子类化并更改该行为,但就像您在示例中所做的那样,自己将信息编码到标头中似乎更容易。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-22
      • 1970-01-01
      • 2012-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-06
      相关资源
      最近更新 更多