1. 服务器开启session

  2. 客户端通过浏览器访问服务器,服务器会判断请求头信息中是否包含session_id,如果包含则去session文件存储位置寻找对应的session文件,session文件不存在则创建;如果请求头中不包含session_id,则会自动创建session文件,同时将session_id返回到服务器中,如果本地开启cookie则session_id保存在cookie中

  3. cookie可以设置生存周期,默认是保存在内存中,关闭浏览器销毁cookie,重新打开浏览器访问服务器此时session_id不存在,就会重新创建session文件和session_id;可以设置cookie的生命周期,如果关闭浏览器时扔在生命周期内,则会将session_id保存到指定的cookie存放位置,下次打开浏览器会扫描是否有对应的cookie,如果有对应cookie,向指向服务器发送请求就可以得到session,(即自动登录机制的实现方式)

  4. session_id是计算机自动生成的一个不易破解没有规律的唯一值,用于做唯一标识;session文件存储于服务器端,服务器端可以配置session的生命周期,到期之后会自动删除失效;也可以程序控制删除,例如登录退出时unset(清空session文件内容)、destroy(删除session文件)  (本人是PHP菜鸟,只能用PHP函数)

  5. session文件内容类似hashMap的散列形式,里面存储写入的数据

  6. 可以在cookie中写入一些值,setcookie(key, value, time, path, domain) 具体含义百度既可

  7. 会话机制针对http协议的无状态产生(看资料都是这样说,错了勿喷  本人小白)

  8. 客户端禁用cookie,可以将session_id绑定到url传递,服务器作为url参数获取,这是一个常见问题

  9. 由于session_id返回给客户端,存储在cookie中,可以被查看到,因此比如简单的做法:复制session_id模拟请求服务器,这就是所谓的session劫持,因此,通常会说cookie是不安全的




    PS: 只是本人的学习笔记,如果有童鞋看到了可以起到帮助最好,如果有错误希望勿喷,只是粗浅的理解  本人PHP小菜鸟一枚  勿怪