• Cookie和Session


    无状态协议

    指事务处理没有记忆能力,服务器不知道客户端是什么状态。

    即我们给服务器发送HTTP请求,服务器根据请求,发送回数据,但是没有任何记录。

    Session

    Session是在无状态的HTTP协议下,服务端记录用户状态时用于标识具体用户的机制。它是在服务端保存的用来跟踪用户的状态的数据结构,可以保存在文件、数据库或者集群中。在浏览器关闭后这次的Session就消失了,下次打开就不再拥有这个Session。其实并不是Session消失了,而是Session ID变了,服务器端可能还是存着你上次的Session ID及其Session 信息,只是他们是无主状态,也许一段时间后会被删除。
     

    服务端会话

    session会话,解决无状态这一设计。

    一次会话,包含多个请求和响应。

    一次会话,浏览器给服务器发送一次请求,建立会话,直到一方断开

    特点

    用于存储一次会话的多次请求,存在服务器端

    可以存储任意类型,任意大小的数据

    Cookie 是客户端保存用户信息的一种机制,用来记录用户的一些信息。如何识别特定的客户呢?Cookie 就可以做到。每次 HTTP 请求时,客户端都会发送相应的 Cookie 信息到服务端。它的过期时间可以任意设置,如果你不主动清除它,在很长一段时间里面都可以保留着,即便这之间你把电脑关机了。

    客户端会话

    1. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    2. Cookie[] cookies = req.getCookies();
    3. for (Cookie eve:cookies){
    4. System.out.println(eve.getName() + "=" + eve.getValue());
    5. }
    6. Cookie cookie = new Cookie("coo","wzx");
    7. resp.addCookie(cookie);
    8. }

    一次可以发送多个cookie,多次调用addCookie方法即可

    设置保存时间 setMaxAge(int seconds) 

    tomcat8之后 支持保存中文(除了特殊字符)

    cookie共享

    默认不能共享

    如果要共享,调用setPath方法 里面的path参数设置成 / 即可

    特点和作用

    cookie用来存储数据在客户端浏览器上

    对于单个cookie限制4kb大小,同一域名下限制20个cookie

    作用:

    用来存储少量不敏感的数据

    在不登陆的情况下,完成服务器对客户端的身份识别

    cookie和session的不同

    • cookie存储数据在客户端,session存储数据在服务器端
    • cookie限制数据大小4kb,session不限制
    • cookie数据相比不安全

    总结区别如下

    • Cookie 在客户端(浏览器),Session 在服务器端;
    • Cookie的安全性一般,他人可通过分析存放在本地的Cookie并进行Cookie欺骗。在安全性第一的前提下,选择Session更优。重要交互信息比如权限等就要放在Session中,一般的信息记录放Cookie就好了;
    • 单个Cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个Cookie;
    • Session 可以放在 文件、数据库或内存中,比如在使用Node时将Session保存在redis中。由于一定时间内它是保存在服务器上的,当访问增多时,会较大地占用服务器的性能。考虑到减轻服务器性能方面,应当适时使用Cookie;
    • Session 的运行依赖Session ID,而 Session ID 是存在 Cookie 中的,也就是说,如果浏览器禁用了 Cookie,Session 也会失效(但是可以通过其它方式实现,比如在 url 中传递 Session ID);
    • 用户验证这种场合一般会用 Session。因此,维持一个会话的核心就是客户端的唯一标识,即Session ID。
       

    重要的验证码登录

    在我的gitee上  https://gitee.com/wu-zhengxu/wzx/tree/11-14-VerifyLogin/

  • 相关阅读:
    FileChannel 文件流的简单使用
    联想y7000 y7000p 2018/2019 不插电源 不插充电器, 直接关机 ,电量一直89%/87%/86%,V0005如何解决?
    Spring Boot企业级开发教程课后习题——第5章Spring Boot实现Web的常用功能
    《web课程设计》用HTML CSS做一个简洁、漂亮的个人博客网站
    【R语言】边缘概率密度图
    深度解读F5:从企业级负载均衡到云原生应用服务
    and-design-vue 3.2.20官方离线文档(中文)
    【数据结构】什么是线性表?
    记录k8s-Calico网络插件报错问题
    IntelliJ IDEA 15个插件
  • 原文地址:https://blog.csdn.net/qq_43009048/article/details/127843171