网络浏览器遵循 HTTP 协议与网站互动。这是一组标准化的规则,用于进行通信:
- 当您访问网页时,浏览器会发送 HTTP 请求来获取网页上的资源,例如 HTML、CSS、JavaScript 和图片。
- 当 HTTP 服务器(托管网站的 Web 服务器)收到来自浏览器的有效 HTTP 请求时,该服务器会向浏览器发送 HTTP 响应。
- 请求和响应可以包含额外的信息,称为 HTTP 标头。
例如,请考虑网站 cats.example.
请求
访问 cats.example
页面会发起一系列对各种网域的请求。这包括对 cats.example
本身托管的图片的请求、对 analytics.example
中的分析脚本的请求,以及对其他网域中的其他资源的其他请求。
HTTP 请求可以添加 HTTP 请求标头,以便从浏览器向网络服务器提供补充信息。例如,通常会添加以下标头:
Accept-Language: en-US
此标头表示用户的首选语言,在本例中为英语(美国)。User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36
此标头提供有关用户浏览器和操作系统的详细信息,在本例中分别为“Mozilla/5.0”(浏览器系列)、“Macintosh”(操作系统)和“Chrome/127.0.0.0”(浏览器版本)。
响应
当网络服务器收到来自浏览器的有效请求时,服务器会向浏览器发送响应,提供请求的资源(“载荷”):HTML、CSS、JavaScript、图片文件、视频或其他数据。就像来自浏览器的每个请求都可以包含请求标头一样,来自服务器的每个响应都可以包含响应标头。这些响应标头会随载荷一起发送。
响应中包含的 Set-Cookie
标头会指示浏览器存储一些文本:名称和值。这称为 HTTP Cookie。为了响应对 cats.example/images/cat.jpg
的请求,cats.example
服务器会包含标头 Set-Cookie:cat=tabby
。这会指示浏览器存储一个名为 cat 且值为 tabby 的 Cookie。
然后,该 Cookie 将包含在对 cats.example,
的后续请求中,直到该 Cookie 过期或被移除。这样,服务器便可以在多个网页或会话中维护用户的相关信息:例如,用户已看到虎斑猫的图片。
标题 | 操作 | 示例 | 效果 | |
---|---|---|---|---|
HTTP 响应 服务器到浏览器 |
Set‑Cookie
|
网络服务器会要求您的浏览器存储 Cookie。 | Set‑Cookie:cat=tabby |
浏览器会存储该 Cookie,并在后续请求中将其提供给设置该 Cookie 的服务器。 |
HTTP 请求 浏览器到服务器 |
Cookie |
您的浏览器提供 Cookie。 | Cookie:cat=tabby |
该 Cookie 会提供给请求的目标服务器。 |
演示
- 1pc.glitch.me:第一方 Cookie 演示
- 3pc.glitch.me:第三方 Cookie 演示