zoukankan      html  css  js  c++  java
  • 54 HTTP-session;55 HTTP-Cookie

    54 HTTP-session

    功能:解决HTTP中无状态的缺陷;

    无状态: 服务器不知道客户端情况,于是认为每一次访问、请求都是一次全新的请求;比如对于需要登录的系统,登录系统之后的每一步操作,系统都认为是全新的操作,每次都要重新登录。而session 保存了客户端的登录状态,这样就不需要重复的多次登录。session帮助服务器识别客户端。

    工作机制

    1. 客户端访问服务器时,服务器分配SESSIONID,服务器记录登录信息,并将保存信息的文件SESSIONID 保存到服务器;之后服务器根据客户端请求时发送的SESSIONID和服务器记录判断客户端的登录状态。
    2. 客户端第一次访问服务器时,request header 中不包含cookie信息(),第一次访问的 response header 中带有 set-cookie;此时浏览器保存 cookie, 之后的request 就会带上cookie; 如果第一次访问时,request header 中就有cookie,说明该客户端之前访问过服务器。
    3. 报文:Set-Cookie : SESSIONID = 32 位的16进制数字,= 16的32次方,重复概率低,可以当做唯一性标识;
    4. SESSIONID 保存在服务器的tmp文件中(以SESSIONID 命名的文件;服务器所在目录的tmp文件,不是客户端的文件);该文件记录了用户登录信息;
    5. SESSIONID 文件内容:
      • userID|s:1:"1"  : userID 是string 格式,长度 = 1,值 = 1;
      • 如果将“isLogin ” 的值 由 “true” 修改为“false”, 点击客户端系统页面时,系统返回登录界面,要求重新登录;这个值记录了浏览器的登录状态。

    注意:

    1. 输入网址的时候,尽量写完整的网址;http://localhost/agileone 不是一个完整的网址,访问的时候,浏览器先redirect, 在网址后添加“/”,然后才能到目标网址;而重定向会花费很长的时间,1s 左右;
    2. 对于大型网站,可能会有十几万个session,如果保存到服务器硬盘,性能低,寻址速度慢。客户端迟早是要离开页面的,不需要长时间记录,所以可以将sessionID文件保存到内存中,获取速度快,性能好;也可以放到关系型数据库中;
    3. 作为测试工程师,思考问题的方式:细节决定了一个系统的好坏,由于生产环境数据量大,测试中不是问题的细节,也会在生产环境中变成很大的问题,甚至导致系统奔溃。所以测试的时候,要从生产环境的角度考虑,从用户的角度考虑。

    疑问:如何进行session 欺骗?

    55 HTTP-Cookie

    1. cookie 和session,机制很像, 都是键-值的对应形式;Cookie  保存在客户端;cookie文件,=系统缓存内容;
    2. 运行机制:通过cookie的形式,将登陆信息保存在客户端,下次访问相同系统,不需要重新登录系统,直接显示系统登录之后的界面:
      1. 浏览器读取本地cookie 中的账号信息
      2. 浏览器将cookie内登录信息发送给服务器(包括session)
      3. 验证信息:服务器通过session 判定该客户端的登录状态
      4. 服务器响应客户端:返回给客户端数据
      5. 客户端访问系统页面成功
    3. cookie 文件命名规则:cookie:denny@localhost/ = cookie: + 登录PC 操作系统的账号+@+访问的主机
    4. cookie 文件内容:明文保存账号、密码,危险,所以关闭浏览器时,应先点击退出系统,然后再关闭浏览器(退出系统:清空session 和cookie 全部信息)
    5. 只要将cookie 保存到本地就有风险;其它客户端将本客户端的cookie信息发送给服务器,服务器会判定其他客户端已经登录系统了,享有和本客户端相同的权限

    疑问:浏览器如何识别cookie? 

    参考网站:https://baike.baidu.com/item/cookie/1119?fr=aladdin

  • 相关阅读:
    查看网页源代码的方法
    Chrome浏览器清除缓存
    copy与内存管理
    分类(Category)
    @class的使用
    @property参数的
    力扣131题、93题(分割回文串,复原IP地址)
    力扣17题(电话号码的字母组合)
    力扣216(组合总和)
    力扣242题、383题(有效的字母异位词,赎金信)
  • 原文地址:https://www.cnblogs.com/George19950505/p/12315248.html
Copyright © 2011-2022 走看看