![HTTP 和 cookies 与多个服务器协同工作](https://linux22.com/image/693110/HTTP%20%E5%92%8C%20cookies%20%E4%B8%8E%E5%A4%9A%E4%B8%AA%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%8D%8F%E5%90%8C%E5%B7%A5%E4%BD%9C.png)
假设一个 HTTP/1.1 连接的简化图,其中客户端发出一个带有 cookie 分配的页面和图像请求,可以简化为:
(第二个请求的时间传输并不是那么微不足道,它取决于 cookie 维度)
有人能解释一下 Cookie 技术是如何工作的吗?例如,当图片保存在与保存页面的服务器不同的服务器中时?客户端是否会将之前分配的相同 Cookie ID 发送到第二台服务器?还是取决于服务器的实现方式?
为了避免误解,我要说的是,我很清楚,如果图片保存在另一台服务器中,则客户端必须建立另一个 TCP 连接。
我们显然正在使用持久 HTTP 会话,并且我们没有考虑 C 和 S 之间的任何路由器。
答案1
看起来你把两件事混在一起了。
Cookies 存储在客户端。所有 cookies(取决于 URL)都随客户端请求发送,因此服务器拥有 cookies 中的所有数据(它们保存在客户端,而不是服务器上)。没有 Cookie ID。
也许您正在考虑会话 ID。在这种情况下,只有会话 ID 存储在客户端的 Cookie 中(名为 PHPSESSID 的 Cookie 或具有会话 ID 值的类似名称),所有会话数据都存储在服务器上。在这种情况下,当您想要从不同的服务器访问会话时会出现问题。您可以通过将会话保存在某些共享存储、数据库或 memcache/redis 中来解决此问题。