<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Cookie 和 Session on Last Stand</title><link>https://amatsuzero.github.io/LastStand/tags/cookie-%E5%92%8C-session/</link><description>Recent content in Cookie 和 Session on Last Stand</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Wed, 06 Aug 2025 00:00:00 +0800</lastBuildDate><atom:link href="https://amatsuzero.github.io/LastStand/tags/cookie-%E5%92%8C-session/index.xml" rel="self" type="application/rss+xml"/><item><title>Cookie 和 Session</title><link>https://amatsuzero.github.io/LastStand/posts/frontend/network/cookie-session/</link><pubDate>Mon, 28 Jul 2025 00:00:00 +0800</pubDate><guid>https://amatsuzero.github.io/LastStand/posts/frontend/network/cookie-session/</guid><description>&lt;h2 id="cookie-和-session"&gt;Cookie 和 Session&lt;/h2&gt;
&lt;p&gt;HTTP 协议是一种&lt;code&gt;无状态协议&lt;/code&gt;，即每次服务端接收到客户端的请求时，都是一个全新的请求，服务器并不知道客户端的历史请求记录；Session 和 Cookie 的主要目的就是为了弥补 HTTP 的无状态特性。&lt;/p&gt;
&lt;h3 id="session-是什么"&gt;Session 是什么&lt;/h3&gt;
&lt;p&gt;客户端请求服务端，服务端会为这次请求开辟一块&lt;code&gt;内存空间&lt;/code&gt;，这个对象便是 Session 对象，存储结构为 &lt;code&gt;ConcurrentHashMap&lt;/code&gt;。Session 弥补了 HTTP 无状态特性，服务器可以利用 Session 存储客户端在同一个会话期间的一些操作记录。&lt;/p&gt;
&lt;h3 id="session-如何判断是否是同一会话"&gt;Session 如何判断是否是同一会话&lt;/h3&gt;
&lt;p&gt;服务器第一次接收到请求时，开辟了一块 Session 空间（创建了Session对象），同时生成一个 sessionId ，并通过响应头的 **Set-Cookie：JSESSIONID=XXXXXXX **命令，向客户端发送要求设置 Cookie 的响应； 客户端收到响应后，在本机客户端设置了一个 &lt;strong&gt;JSESSIONID=XXXXXXX&lt;/strong&gt; 的 Cookie 信息，该 Cookie 的过期时间为浏览器会话结束；&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="https://amatsuzero.github.io/LastStand/posts/frontend/network/cookie-session/image-01.png"&gt;&lt;/p&gt;
&lt;p&gt;接下来客户端每次向同一个网站发送请求时，请求头都会带上该 Cookie信息（包含 sessionId ）， 然后，服务器通过读取请求头中的 Cookie 信息，获取名称为 JSESSIONID 的值，得到此次请求的 sessionId。&lt;/p&gt;
&lt;h3 id="session-的缺点"&gt;Session 的缺点&lt;/h3&gt;
&lt;p&gt;Session 机制有个缺点，比如 A 服务器存储了 Session，就是做了负载均衡后，假如一段时间内 A 的访问量激增，会转发到 B 进行访问，但是 B 服务器并没有存储 A 的 Session，会导致 Session 的失效。&lt;/p&gt;
&lt;h3 id="cookies-是什么"&gt;Cookies 是什么&lt;/h3&gt;
&lt;p&gt;HTTP 协议中的 Cookie 包括 &lt;code&gt;Web Cookie&lt;/code&gt; 和&lt;code&gt;浏览器 Cookie&lt;/code&gt;，它是服务器发送到 Web 浏览器的一小块数据。服务器发送到浏览器的 Cookie，浏览器会进行存储，并与下一个请求一起发送到服务器。通常，它用于判断两个请求是否来自于同一个浏览器，例如用户保持登录状态。&lt;/p&gt;</description></item></channel></rss>