cookie和session都是会话跟踪技术。
Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份

1.什么是会话跟踪技术?

  1. 会话跟踪常用的有两种技术:CookieSession,并且Session底层依赖于Cookie。<br /> HTTP是无状态协议,也就是没有记忆力的协议,每个请求之间无法共享数据。这就无法知道会话什么时候开始,什么时候结束,也无法确定发出请求的用户身份。这说明需要使用额外的手段来跟踪会话!<br /> 在一个会话中共享数据即会话跟踪技术

一、session(存服务器、占内存、)

1.什么是Session会话?

1.session就是一个接口(HttpSession).
2.Session就是会话,它是用来维护一个客户端个服务器之间关联的一种技术。
3.每个客户端都有一个自己的session会话。
4.经常用来保存用户登录之后的信息

2.创建和获取Session

request.getSession()
第一次调用时:创建Session会话
之后调用都是:获取前面创建好的Session会话对象。

  • session是另一种记录客户状态的机制。session保存在服务器上。
  • 客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上,这就是session。
  • 客户端浏览器再次访问时只需要从该session中查找该客户的状态就可以了。
  • 当用户通过浏览器和服务器建立一次会话后,sessionID就会随响应信息返回存储在基于窗口的cookie中,那就意味着只要浏览器没有关闭,会话没有超时,下一次请求时这个sessionID又会提交给服务器让服务器识别用户身份。
  • session话中可以为用户保存信息。当然,和用户会话相关的其他信息(除了会话ID)也可以存在cookie方便进行会话跟踪。


二、cookie(存客户端、不安全、存放数据量有限)

1. 什么是Cookie?

  1. 从编程的角度来讲,Cookie其实是一份小数据,是服务器响应给客户端,并且**存储在客户端**的一份小数据。**下次客户端访问服务器时,会自动带上这个Cookie。**服务器通过Cookie就可以区分客户端。
  • Cookie是HTTP协议的规范之一,它是服务器和客户端之间传输的小数据。
    首先由服务器通过响应头把Cookie传输给客户端,客户端会将Cookie保存起来。
    当客户端再次请求同一服务器时,客户端会在请求头中添加该服务器保存的Cookie,发送给服务器。
    Cookie就是服务器保存在客户端的数据!
    Cookie就是一个键值对!!!

    cookie是Web服务器发送给浏览器的一块信息。
    浏览器会在本地文件中给每一个Web服务器存储cookie。以后浏览器在给特定的Web服务器发请求的时候,同时会发送所有为该服务器存储的cookie。
    (cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户的状态,就使用response向客户端浏览器颁发一个cookie。客户端浏览器会把cookie保存起来。当浏览器再次请求该网站时,浏览器就会把请求地址和cookie一同给服务器。服务器检查该cookie,从而判断用户的状态。服务器还可以根据需要修改cookie的内容。)

    2.cookie有两种

  • 一种是基于窗口的,浏览器窗口关闭后,cookie就没有了;
  • 另一种是将信息存储在一个临时文件中,并设置存在的时间。

在使用cookie时要注意几点:
首先不要在cookie中存放敏感信息;(不安全)
其次cookie存储的数据量有限(4k),不能将过多的内容存储cookie中;
再者浏览器通常只允许一个站点最多存放20个cookie。

3.服务器获取Cookie

Cookie[] cookies = req.getCookies();

三、不同点

  • session对象是在服务器内存中的,而基于窗口的cookie是在客户端内存中的。
  • cookie不是很安全,别人可以分析存放在本地的cookie,进行cookie欺骗;session会在一定时间内保存在服务器上,当访问增多,会占用服务器性能
  • cookie保存数据不能超过4k,很多浏览器都限制一个站点最多存放20个cookie


图示

会话跟踪.png

链接

知乎——作者:bravo1988