会话 cookie 是没有过期时间的 cookie。
会话 cookie 的处理因浏览器和浏览器版本而异,但通常没有过期日期的 cookie 在该浏览器的最后一个实例关闭时被删除(生命周期=浏览器的运行时间)。
重要的是,与 cookie 值对应的服务器端会话具有在服务器上定义的完全独立的生命周期。 HTTP 是一种无连接协议,因此当您的浏览器不在事务中时,服务器端不知道您是否还在。 Tomcat 发出名为 JSESSIONID 的唯一、固定长度的 cookie,它们链接到服务器上存储的会话数据。在这种情况下,会话到期时间存储在服务器上。 ASP base64 对所有会话信息进行编码、加密并将其写入浏览器中的巨型 cookie,因此它不必将会话数据存储在服务器上。会话到期时间保存在 cookie 中存储的加密数据中。无论哪种方式,都会记录会话何时到期,因此会话生命周期不能超过服务器端超时。
您可以在另一个浏览器中设置相同的 cookie,并发送与第一个浏览器相同的数据(主要是 cookie),只要未达到服务器超时,服务器就会让您访问服务器-side session 以同样的方式。当人们对您的 cookie 执行此操作时,称为会话劫持。
这是添加“会话”cookie 的 JavaScript 代码,它只是一个没有设置“过期”值的 cookie。
document.cookie="COOKIENAME=cookievalue";
这里的 JavaScript 添加了一个带有特定过期时间的 cookie,这意味着浏览器被指示在该时间之后停止发送它和发出的请求:
document.cookie="COOKIENAME=cookievalue; expires=Fri, 31 Dec 9999 00:00:01 GMT";
发送到服务器的 cookie 数据不包括过期时间等元数据;服务器只看到 key=value 对。
过期数据仅供浏览器读取。
使用上述任何一种方法设置 cookie 都会导致浏览器以这种方式将该 cookie 发送到服务器:
Cookie: COOKIENAME=cookievalue
服务器最初设置 cookie 是否有过期日期,但它不知道是否已更改,它并不关心。设置为下个月到期的 cookie 与计算机上的会话 cookie 之间没有功能上的区别,该计算机上的浏览器一直运行到下个月。