HTTP协议的特性

1.无连接

就是每次连接只处理一个请求,当服务器处理完客户的请求,并收到客户的应答后就会断开连接,这种方式可以节省传输的时间。

HTTP1.0协议默认是无连接的,由于不符合现代互联网的网络传输特点,故已在HTTP1.1标准中默认将Connection设置为了Keep-Alive

Keep-Alive功能使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接。
只要任意一端没有明确提出断开连接,则将一直保持 TCP连接状态。

在这里插入图片描述
2.无状态性

无状态是指协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。即我们给服务器发送HTTP请求之后,服务器根据请求,会给我们发送响应数据回来。但是发送完后不会记录任何信息。

# http无状态,两个网址是独立的,不能成功登录
def func7():
    data = {
        'username': 'admir',
        'password': '1234'
    }
    requests.post('http://localhost:8080/mms/Login/loginUser',data = data)
    resp = requests.get('http://localhost:8080/mms/Login/GetLoginName')
    print(resp.text)
  • 优势:不需要消耗资源记录客户端状态信息,可以把更多资源用于提供服务。

  • 劣势:对于客户端有关联性的操作时会非常麻烦。

    目前常见的解决手段是cookie. session和token

  • Session:服务器用于保存客户端信息的“一 堆数据",每个session会有一 个session id, 这个id会被发送给客户端进行保存。session具有时效性,过期就失效了。

"""
利用session对象保持会话状态
"""
def func14():
    session=requests.Session() # 创建一个session对象
    #在接口测试项目中,所有需要在登陆后接口请求,必须使用sessio对象来发送请求
    session.post('http://localhost:8080/mms/Login/GetLoginName')# 创建一个session对象
    data={
        'username':'admir',
        'password':'1234'
     }
     # http无状态,是独立的,不能成功登录
    session.post('http://localhost:8080/mms/Login/loginUser',data=data)
    resp=session.get('http://localhost:8080/mms/Login/GetLoginName')#获取登录信息--->request返回的是http无状态性
    print(resp.text)
  • Cookie
    一个具体的文本文件,由服务器生成,但保存在客户端。在客户端第一次请求后服务器会下发一个装有客户信息的“小贴纸”,后续客户端请求服务器的时候,带上这个“小贴纸",服务器就知道客户端的信息了。
"""
在请求头中添加cookie信息 主要通过cookie绕过登录获取登录后的数据,cookie会过期
cookie容易失效,就无法获取登录后的信息,不推荐使用,临时登录可用
"""
def func6():
    headers={
        'Cookie':'JSESSIONID=F411C3F3038366FCE12226690D3E5A51'
    }
    resp=requests.get('http://localhost:8080/mms/Login/GetLoginName',headers=headers)
    print(resp.text)

服务器保存的session多了,资源有限的情况下就需要做扩充,比如基于为服务的服务集群如何去保持登录?

  • token:
    这时候就需要服务器生成的数字签名,保存每个登录成功的信息,经过特殊加密后的一串字符。不管token签名发给那一台服务器都会通过解密验证登录。
    在这里插入图片描述
  • 用户通过用户名和密码进行登陆校验。
  • 服务器验证,如果验证通过则返回一个服务器端签名的token给客户端。
  • 客户端储存token,并且每次用于每次发送请求。
  • 服务端验证token并返回数据。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值