zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    java 中 堆、栈的区别(转)
    斐波那契数列(关于递归)
    .NetCore使用Hangfire
    大话西游系统文件分析
    VC游戏开发图片镂空
    华硕XTion Pro开发环境配置
    TweenMax 参数说明(中文翻译)
    程序员的追求
    最近得到的
    mvc的json
  • 原文地址:https://www.cnblogs.com/dengyg200891/p/4930664.html
Copyright © 2011-2022 走看看