HTTP - Cookie 机制

HTTP 是种无状态的协议,即使用 HTTP 协议时,每次发送请求都会产生对应的新响应,协议本身不会保留之前一切的请求或响应报文的信息。这是为了更快地处理大量事务,确保协议的可伸缩性,而特意把 HTTP 协议设计成简单化。随着 Web 的不断发展,因无状态而导致业务处理变得棘手的情况增多了。比如,用户登录到一家购物网站,即使他跳转到该站的其他页面后,也需要能继续保持登录状态。为了实现管理状态,便引入了 Cookie 技术。

Cookie 是如何工作的

(a) 用户第一次访问 Web 站点,Web 服务器对用户一无所知。

(b) Web 服务器希望这个用户下次访问该站点时,可以识别出它来。所以通过 Set-Cookie(或 Set-Cookie2)向客户端回送一个独有的 cookie。上图中,服务器会将一个表示 id="34294" 的 cookie 返回给用户。服务器可以用这个数字来查找服务器为其访问者累积的数据库信息。cookie 并不仅限于保存 ID 号。很多 Web 服务器都会将信息以名值对的形式直接保存在 cookie 中。

(c) 浏览器接收到 Web 服务器的响应,会将 Set-Cookie(或 Set-Cookie2)首部中的 cookie 内容保存在本地。将来用户再次访问同一站点时,浏览器会将 cookie 的内容取出,并通过 Cookie 请求首部将其传回去,以此来标识自己的身份。

Cookie Jar

当 Web 服务器通过 Set-Cookie 响应首部返回 cookie 时,浏览器会将 cookie 的内容保存在本地。 Set-Cookie 首部的形式如下:

Set-Cookie: name=value[; expires=DATE][; path=PATH][; domain=DOMAIN][; secure][; HttpOnly]

不同的浏览器会以不同的方式来存储 cookie,但本质上都是纯文本的形式。以网景 Navigator 存储 cookie 的文本文件为例:

# Netscape HTTP Cookie File
# http://curl.haxx.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.
#
# domain	allh	path	secure	expiration	name	value

.localhost	TRUE	/hello	FALSE	1442545174	userid	huey2672

文本文件中的每一行都代表一个 cookie。有 7 个用 tab 键分隔的字段。

domain 字段
通过 Cookie 的 domain 字段指定的域名可做到与结尾匹配一致。比如,当指定 example.com 后,除 example.com 以外,www.example.com 或 www2.example.com 等都可以发送 Cookie。

allh 字段
Cookie 的 allh 字段指定是域中所有的主机都获取 cookie,还是只有指定了名字的主机获取。

path 字段
Cookie 的 path 字段可用于限制指定 cookie 的发送范围的文件目录。

secure 字段
secure 字段指定是否只有在使用 SSL 连接时才发送这个 cookie。

expiration 字段
Cookie 的 expiration 字段指定浏览器可发送 cookie 的有效期。当 Set-Cookie 首部省略 expires 字段时,其有效期仅限于维持浏览器会话时间段内。这通常限于浏览器应用程序被关闭之前。另外,一旦 cookie 从服务器端发送至客户端,服务器端就不存在可以显示删除 cookie 的方法。但可通过覆盖已过期的 cookie,实现对客户端 cookie 的实质性删除操作。

name 字段
cookie 的名称

value 字段
cookie 的值

httponly 字段
httponly 字段没有保存在文本文件中,它是 Cookie 的扩展功能,它使 JavaScript 脚本无法获得 cookie。其主要目的是为防止跨站脚本攻击(Cross-site scripting ,XSS)对 cookie 的信息窃取。

时间: 2024-10-08 00:00:27

HTTP - Cookie 机制的相关文章

cookie机制

Cookie通过在客户端记录信息确定用户身份 一个用户的所有请求操作都应该属于同一个会话, HTTP协议是无状态的协议.一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接.这就意味着服务器无法从连接上跟踪会话. cookie机制: 客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie.客户端浏览器会把Cookie保存起来.当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器.服务器检查该Coo

[原创]java WEB学习笔记28: 会话与状态管理Cookie 机制

1.会话与状态管理 1)背景 ① HTTP协议是一种无状态的协议,WEB服务器本身不能识别出哪些请求是同一个浏览器发出的 ,浏览器的每一次请求都是完全孤立的: ② 作为 web 服务器,必须能够采用一种机制来唯一地标识一个用户,同时记录该用户的状态: ③ 问题:怎么才能实现网上商店中的购物车呢:某个用户从网站的登录页面登入后,再进入购物页面购物时,负责处理购物请求的服务器程序必须知道处理上一次请求的程序所得到的用户信息. 2)会话和会话状态 ① WEB应用中的会话:指一个客户端浏览器与WEB服务

cookie机制和session机制的区别

一.cookie机制和session机制的区别 具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案.同时我们也看到,由于才服务器端保持状态的方案在客户端也需要保存一个标识,所以session机制可能需要借助于cookie机制来达到保存标识的目的,但实际上还有其他选择 二.会话cookie和持久cookie的区别 如果不设置过期时间,则表示这个cookie生命周期为浏览器会话期间,只要关闭浏览器窗口,cookie就消失了.这种生命期为浏览会

初识JSP之Cookie机制

http协议的无状态性 我们在进行web应用程序开发的时候,使用的是HTTP协议来传输数据,但是这个Http协议有个先天性的不足,也就是无状态,它无法对用户的状态进行保存管理.所谓的无状态就是是指,当浏览器发送请求给服务器的时候,服务器响应客户端请求,但是当同一个浏览器再次发送请求给服务器的时候,服务器并不知道它就是刚才的那个浏览器.简单地说,就是服务器不会去记得你.所以称作无状态协议. 由于HTTP协议是无状态的协议.一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连

cookie机制与session机制的区别

一.cookie机制和session机制的区别 具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案.同时我们也看到,由于采用服务器端保持状态的方案在客户端也需要保存一个标识,所以session机制可能需要借助于cookie机制来达到保存标识的目的,但实际上还有其他选择. 二.会话cookie和持久cookie的区别 如果不设置过期时间,则表示这个cookie生命周期为浏览器会话期间,只要关闭浏览器窗口,cookie就消失了.这种生命期为浏

Cookie机制 和 session 机制

先简单介绍下 cookie机制采用的是在客户端保持状态的方案 session机制可能需要借助于cookie机制来达到保存标识的目的,但实际上它还有其他选择 客户端保留服务端的sessioID 正统的cookie分发是通过扩展HTTP协议来实现的 服务器通过在HTTP的响应头中加上一行特殊的指示以提示浏览器按照指示生成相应的cookie 纯粹的客户端脚本如JavaScript也可以生成cookie cookie的内容主要包括:名字,值,过期时间,路径和域. 若不设置过期时间,则表示这个cookie

php session机制与cookie机制以及联系与区别

session与cookie是在做项目中很常用的会话技术,session与cookie也是面试中被问到频率最高的问题,有一次我去面试,面试官就怼着我session与cookie一直问(头都大了),下面总结了一些关于session与cookie的区别与联系. 说到session与cookie,先说一下什么是会话技术: 由于http协议是无状态的协议,也就是说当一个用户在请求一个页面后再请求另一个页面时,http将无法告诉我们这两个请求是否来自于同一个用户,这就意味着我们需要有一种机制来跟踪和记录用

HTTP Session、Cookie机制详解

一.什么是http session,有什么用 HTTP协议本身是无状态的,本身并不能支持服务端保存客户端的状态信息,于是,Web Server中引入了session的概念,用来保存客户端的状态信息. 这 里用一个形象的比喻来解释session的工作方式.假设Web Server是一个商场的存包处,HTTP Request是一个顾客,第一次来到存包处,管理员把顾客的物品存放在某一个柜子里面(这个柜子就相当于Session),然后把一个号码牌交给这个顾 客,作为取包凭证(这个号码牌就是Session

客户端识别和cookie机制

HTTP最初是一个匿名的.无状态的请求,服务器处理来自客户端的请求,然后向客户端回送响应,web服务器几乎没有什么信息来判定是哪个用户发送的请求,也无法记录用户的请求序列,以下有几种方法来增加用户识别机制: 第一.HTTP首部 1.from首部:包含了E-mail地址 2.User-Agent:包含了浏览器相关信息,包括程序的名称和版本, 3.Referer:提供了用户来源页面的URL 第二.客户端的IP地址: 通过TCP链接得到IP地址,存在的问题: 客户端IP地址描述的所用的机器,而不是用户

JavaWeb学习总结第五篇--认识Cookie机制

Cookie机制 前言 会话跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie和Session.Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份.今天,我首先给大家讲解一下Cookie机制,后面我会给大家提到Session的. 什么是Cookie Web应用程序是使用HTTP协议传输数据的.HTTP协议是无状态的协议.一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要新的连接.这就意味着服务器无法从