• HTTP协议详解之基本认证篇


    •什么是HTTP基本认证:

      桌面应用程序也通过HTTP协议跟web服务器交互,桌面应用程序一般不会使用cookie,而是把‘用户名+:+密码’用base64编码之后的string放在request中的header Authorization中发送给服务端。

      当打开网页提示需要输入账号和密码时,假设密码/账号错误,服务器会返回401错误。

    •HTTP基本认证的过程:

      1)客户端发送request给服务端,

      2)因为request中没有包含Authorization header,服务器会返回一个401错误给客户端。

      3)客户端把用户名和密码用base64编码之后,放在Authorization header中发送给服务器,认证成功。

      4)服务端将Authorization header中的用户名和密码取出来,进行验证,如果验证通过将根据需求发送资源给客户端。

    •HTTP OAuth认证

      OAuth对于HTTP来讲,就是放在OAuthorization header中的不是用户名和密码,而是一个token。

      

    •python案例:

    #python 27
    #xiaodeng
    #HTTP权威指南 133
    
    
    #通过添加HTTP header来实现
    import urllib,urllib2
    from base64 import encodestring
    url=''
    user=''
    passwd=''
    req=urllib2.Request(url)
    basestr=encodestring('%s:%s'%(user,passwd))[:1]
    req.add_header('Authorization','Basic %s'% basestr)
    f=urllib2.urlopen(req)
    
    
    
    #通过headler来实现
    import urllib2
    password_mgr = urllib2.HTTPPasswordMgrWithDefaultRealm()#创建密码管理器
    url = "http://www.163.com/"
    password_mgr.add_password(None, url, username, password)# 添加用户名和密码.如果知道realm,用它代替None.
    handler = urllib2.HTTPBasicAuthHandler(password_mgr)
    
    opener = urllib2.build_opener(handler)#创建opener
    a_url = 'http://www.baidu.com/'  
    opener.open(a_url)#打开一个url
    urllib2.install_opener(opener) #安装opener,以后urllib2.urlopen都会用它。
    import urllib2
    import base64
    
    theurl = 'http://api.minicloud.com.cn/statuses/friends_timeline.xml' 
    req=urllib2.Request(theurl)
    
    username = ''
    password = ''
    base64string = base64.encodestring('%s:%s' % (username, password))[:-1] #注意哦,这里最后会自动添加一个
    
    authheader =  "Basic %s" % base64string
    req.add_header("Authorization", authheader)
    
    handle = urllib2.urlopen(req)
    thepage = handle.read() 
    print thepage
  • 相关阅读:
    深入理解JavaScript系列(17):面向对象编程之概论
    深入理解JavaScript系列(16):闭包(Closures)
    深入理解JavaScript系列(15):函数(Functions)
    深入理解JavaScript系列(14):作用域链(Scope Chain)
    SSM框架之多数据源配置
    开源项目之架构分享
    SpringBoot实战(十二)之集成kisso
    开源项目之kisso
    MP实战系列(十八)之XML文件热加载
    MP实战系列(十七)之乐观锁插件
  • 原文地址:https://www.cnblogs.com/dengyg200891/p/4930664.html
Copyright © 2020-2023  润新知