HTTP 和 cookies 与多个服务器协同工作

HTTP 和 cookies 与多个服务器协同工作

假设一个 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 中来解决此问题。

相关内容