Cookie And Session

在网络连接中,http请求是无状态的。那么就需要一种会话跟踪技术,用来跟踪用户的整个会话。保证服务器可以确定用户的身份。常用的技术就是Cookie和Session。

一、 Cookie

  Cookie是某些网站为了辨别用户身份,进行会话跟踪而储存在用户本地终端上的数据,由用户客户端计算机暂时或永久保存的信息。

  •   Cookie 是由服务器发送给客户端的特殊信息,以文本的形式保存在客户端。
  •        客户端再次请求时,会携带Cookie信息。
  •        服务器可以解析Cookie生成与客户端相对应的内容。

  Cookie的设置以及发送过程:

  

  

  浏览器中,Cookie是以键值对的形式保存数据。例如:

  Cookie的属性:

   name 和value: Cookie以键值对保存。。。。。。 例如下面两幅图,Cookie中每一个键值对在服务端都是一个Cookie对象。

                        

  直接贴源码

public class Cookie implements Cloneable, Serializable {
    private static final CookieNameValidator validation;
    private static final long serialVersionUID = 1L;
    private final String name;
    private String value;
    private int version = 0;
    private String comment;
    private String domain;
    private int maxAge = -1;
    private String path;
    private boolean secure;
    private boolean httpOnly;
    ......
    }

version: 版本

comment: 该Cookie的说明

domain:域名,可以访问该Cookie的域名。如果设置为“.baidu.com",则所有以”baidu.com“结尾的域名都可以访问该Cookie。

maxAge:有效时间,单位秒。为负数时,表示临时Cookie,保存在内存中,不会持久化,关闭浏览器也就没有了。如果maxAge属性为正数,则表示该Cookie会在maxAge秒之后自动失效。浏览器会将maxAge为正数的Cookie持久化,即写到对应的Cookie文件中。无论客户关闭了浏览器还是电脑,只要还在maxAge秒之前,登录网站时该Cookie仍然有效。设置为0,表示即时失效删除该Cookie。有一种说法,Cookie设置为 Integer.MAX_VALUE,可使其永久有效,不清楚是否正确,没有验证过。

path:路径, 只在该路径下读取Cookie

secure:该Cookie是否仅被使用安全协议传输:安全协议有HTTPS,SSL等,在网络上传输数据之前先将数据加密。默认为false

  二、  Session 

  Session是另一种记录客户状态的机制,Session保存在服务器中。当客户端登录服务器时,服务器把客户端信息以类似散列表的形式保存在服务器上。当客户端再次访问时只需要从表中找到该用户的Session信息即可。

  当程序需要为某个客户端的请求创建一个session的时候,服务器首先检查这个客户端的请求里是否已包含了一个session标识,称为session id,如果已包含一个session id则说明以前已经为此客户端创建过session,服务器就按照session id把这个session检索出来使用,如果客户端请求不包含session id,则为此客户端创建一个session并且生成一个与此session相关联的session id,session id的值应该是一个既不会重复,又不容易被找到规律以防伪造的字符串,这个session id将被在本次响应中返回给客户端保存。

  实现方式:

  1. 使用Cookie实现,即在Cookie中保存SessionID。如下图所示:

  2.使用URL回写实现,即将JSESSIONID=xxxxxxxxxxxxxxxxxx 拼接在URL参数或附加信息中。

  在Java中, Session类位于 javax.servlet.http.HttpSession。通过HttpServletRequest类实体的getSession(Boolean create)获取Session对象。

  三、  Cookie和Session的区别

  •   Cookie保存在客户端中,Session保存在服务器中
  •   Session比Cookie要安全,毕竟Cookie要在网络中传递
  •        Session保存在服务器中,就会占用服务器资源。

  

  

posted @ 2022-10-10 22:02  迷路的圆  阅读(35)  评论(0编辑  收藏  举报