Cookie 的规范介绍
目前有以下几种 Cookie 规范:
-
Netscape cookie 草案:是最早的 cookie 规范,基于 rfc2109。尽管这个规范与 rc2109 有较大的差别,但是很多服务器都与之兼容。
-
rfc2109, 是 w3c 发布的第一个官方 cookie 规范。理论上讲,所有的服务器在处理 cookie( 版本 1) 时,都要遵循此规范。遗憾的是,这个规范太严格了,以致很多服务器不正确的实施了该规范或仍在使用 Netscape 规范。
-
rfc2965 规范定义了 cookie 版本 2,并说明了 cookie 版本 1 的不足。
rfc2965 规范的使用,目前并不多。rfc2109 规范相应要严格得多,在实际应用上,并不是所有的浏览器和 Web
服务器都严格遵守。因此相比较而言,Netscape cookie 草案倒是一个比较简洁和被广泛支持的 Cookie 规范,因此我们在这里以
Netscape cookie 草案为基础进行讨论,对于其他两种规范,我们的讨论和代码具有相同的意义。关于 Netscape cookie
草案的细节,大家可以参照 Netscape 官方站点,这里我们列举一些和我们讨论有关的内容。
根据 Netscape cookie 草案的描述,Cookie 是 Web 服务器向用户的浏览器发送的一段 ASCII
码文本。一旦收到 Cookie,浏览器会把 Cookie 的信息片断以"名 / 值"对 (name-value pairs)
的形式储存保存在本地。这以后,每当向同一个 Web 服务器请求一个新的文档时,Web 浏览器都会发送之站点以前存储在本地的 Cookie。创建
Cookie 的最初目的是想让 Web 服务器能够通过多个 HTTP
请求追踪客户。有些复杂的网络应用需要在不同的网页之间保持一致,它们需要这种会话状态的保持能力。
浏览器与 Web 服务器通过 HTTP 协议进行通讯,而 Cookie 就是保存在 HTTP 协议的请求或者应答头部(在 HTTP
协议中,数据包括两部分,一部分是头部,由一些名值对构成,用来描述要被传输数据的一些信息。一部分是主体 (body),是真正的数据(如 HTML
页面等))进行传送的。
在 HTML 文档被发送之前,Web 服务器通过传送 HTTP 包头中的 Set-Cookie 消息把一个 cookie 发送到用户的浏览器中。下面是一个遵循 Netscape cookie 草案的完整的 Set-Cookie 头:
Set-Cookie:customer=huangxp; path=/foo; domain=.ibm.com;
expires= Wednesday, 19-OCT-05 23:12:40 GMT; [secure]
|
Set-Cookie 的每个属性解释如下:
-
Customer=huangxp 一个"名称=值"对,把名称 customer 设置为值"huangxp",这个属性在 Cookie 中必须有。
-
path=/foo 控制哪些访问能够触发 cookie 的发送。如果没有指定 path,cookie 会在所有对此站点的
HTTP 传送时发送。如果 path=/directory,只有访问 /directory 下面的网页时,cookie
才被发送。在这个例子中,用户在访问目录 /foo 下的内容时,浏览器将发送此 cookie。如果指定了 path,但是 path 与当前访问的
url 不符,则此 cookie 将被忽略。
-
domain=.ibm.com 指定 cookie 被发送到哪台计算机上。正常情况下,cookie 只被送回最初向用户发送
cookie 的计算机。在这个例子中,cookie 会被发送到任何在 .ibm.com 域中的主机。如果 domain 被设为空,domain
就被设置为和提供 cookie 的 Web 服务器相同。如果 domain 不为空,并且它的值又和提供 cookie 的 Web
服务器域名不符,这个 Cookie 将被忽略。
-
expires= Wednesday, 19-OCT-05 23:12:40 GMT 指定 cookie 失效的时间。如果没有指定失效时间,这个 cookie 就不会被写入计算机的硬盘上,并且只持续到这次会话结束。
-
secure 如果 secure 这个词被作为 Set-Cookie 头的一部分,那么 cookie 只能通过安全通道传输(目前即 SSL 通道)。否则,浏览器将忽略此 Cookie。
一旦浏览器接收了 cookie,这个 cookie 和对远端 Web 服务器的连续请求将一起被浏览器发送。例如 前一个 cookie
被存入浏览器并且浏览器试图请求 URL http://www.ibm.com/foo/index.html 时,下面的 HTTP
包头就被发送到远端的 Web 服务器。
GET /foo/index.html HTTP/1.0
Cookie:customer=huangxp
一次典型的网络浏览过程
在了解了 Cookie 协议的一些基本内容之后,让我们看看一次典型的网络浏览过程中浏览器如何识别和处理 Cookie:
-
浏览器对于 Web 服务器应答包头中 Cookie 的操作步骤:
1. 从 Web 服务器的应答包头中提取所有的 cookie。
2. 解析这些 cookie 的组成部分(名称,值,路径等等)。
3. 判定主机是否允许设置这些 cookie。允许的话,则把这些 Cookie 存储在本地。
-
浏览器对 Web 服务器请求包头中所有的 Cookie 进行筛选的步骤:
1. 根据请求的 URL 和本地存储 cookie 的属性,判断那些 Cookie 能被发送给 Web 服务器。
2. 对于多个 cookie,判定发送的顺序。
3. 把需要发送的 Cookie 加入到请求 HTTP 包头中一起发送。
分享到:
相关推荐
在提供的压缩包文件`cookies`中,可能包含了一个接口(定义了Cookie操作的规范),一个实现类(实现了接口中的方法),以及一个测试类(用于测试接口和实现类的功能)。通过查看和运行这些代码,你可以更深入地理解...
### JSP中的Cookie操作 在Web开发中,Cookie是一种...通过以上介绍,我们可以了解到在JSP中如何有效地利用Cookie来进行用户状态的管理和信息的持久化存储。这对于实现登录状态保持、个性化推荐等功能具有重要意义。
ajaxajaxajaxajaxajaxajaxajaxajaxajaxajaxajaxajaxajaxajaxajaxajaxajaxajaxajaxajaxajaxajaxajaxajaxajaxajaxajaxajaxajaxajax
以上就是关于"C#封装的cookie操作类"的相关知识点,通过这样的封装,可以使得Web应用程序对Cookie的管理和使用更加便捷、规范,提高代码的可复用性和可维护性。在实际项目中,还可以根据需求扩展更多功能,如删除...
- **version**:Cookie使用的版本号,0代表Netscape规范,1代表W3C规范。 ### Cookie的有效期 Cookie的有效期由`maxAge`属性定义,它可以设置为一个正数、负数或零: - **正数**:表示Cookie在`maxAge`秒之后失效...
这篇文章主要介绍了一个在使用axios发起HTTP请求时携带cookie的配置过程,特别是与Koa框架结合使用的情况。在前端使用axios发送请求时,如果不进行特殊配置,跨域请求默认是不会携带cookie的。为了使axios在跨域请求...
- **解释**:根据Cookie规范,浏览器只会将特定域名下的Cookie发送回该域名的服务器。这意味着,当用户访问Google时,只会携带Google颁发的Cookie;同样地,访问Baidu时,只会携带Baidu颁发的Cookie。 - **安全性和...
- `cookieValue`:经过`escape()`编码的Cookie的值,确保值符合URL编码规范。 - `expirationDateObj.toGMTString()`:指定Cookie的失效日期,如果省略,Cookie将在浏览器关闭后立即失效。 4. **JavaScript的`...
Servlet遵循Java Servlet API规范,该规范定义了Servlet与Web服务器之间的接口。通过Servlet,开发者可以创建能够处理特定业务逻辑的服务器端组件,这些组件可以动态生成HTML、XML或其他任何形式的响应。 1. **...
在IT行业中,网络编程是至关重要的一环,而HTTP协议作为互联网上应用最广泛的数据通信协议,扮演着核心角色。本文将深入探讨如何根据HTTP获取cookie...记得根据实际需求和安全规范进行操作,确保数据的安全和合规性。
ISAPI开发者需要理解HTTP协议,特别是关于Cookie的规范,以便正确地设置和读取Cookie。 在实际开发中,除了基本的Cookie操作,还可能需要处理其他复杂情况,如处理多个Cookie、考虑安全性(如防止跨站脚本攻击XSS)...
要设置Cookie,可以编写一个函数,接收名称、值和过期时间作为参数,然后构建一个符合规范的字符串赋值给`document.cookie`。 ```javascript function setCookie(name, value, days) { var expires = ""; if ...
在网络安全领域,Cookie被广泛用于身份验证和会话管理,但同时也可能成为攻击者的目标。...对于这款名为"Cookie Hacker"的工具,我们需要谨慎使用,确保我们的行动符合法律和道德规范,以保护用户的数据安全。
### HTTP Cookie 协议管理标准分析以及结构实现 #### 基本原理及作用 Cookie是一种小型的数据存储机制,主要用于在网络应用中...开发者需要关注HTTP协议中有关Cookie的规范,并根据实际需求合理设计Cookie管理逻辑。
合法的渗透测试和安全研究应该遵守道德规范,得到适当的授权,并遵循最小伤害原则。同时,作为Web开发者,应当学习如何防止cookie欺骗,例如使用HTTPS、设置Secure和HttpOnly标志,定期更换会话ID,以及限制cookie的...
在ASP环境中,由于编程不规范或安全设置不当,可能导致Cookie数据未经充分验证就直接用于服务器端的处理,为攻击者提供了可乘之机。 二、工作原理 1. 正常流程:用户浏览器接收到服务器发送的Cookie,通常包含会话...
- **RFC2109**:W3C发布的第一个官方Cookie规范,但过于严格,导致一些服务器不完全遵循或使用Netscape草案。 - **RFC2965**:定义了Cookie版本2,改进了RFC2109,但实际应用并不广泛。 6. **兼容性和安全性**: ...
在Java中,Bean通常指的是符合特定规范的对象,这个规范主要体现在JavaBeans和Spring Bean中。JavaBeans是一种可重用的Java组件,它遵循一定的设计模式,包括具有无参数的构造函数、属性(getters和setters)以及...
2. **创建共同的Cookie标准**:定义一套共同的Cookie规范,包括Cookie的名字、过期时间、安全属性等,确保两个系统都能识别和处理。 3. **在Discuz登录成功后,将登录信息编码成Cookie**:当用户在Discuz成功登录后...
如题,jsp Cookie购物车。...这次没有书写详细的使用讲解,并且没有注意编码规范,以及mvc之类的问题,网友下载时不要做过多评论。。。 谢谢 建议在 Firefox下用 Firebug设断点,走流程了解cookie存储信息的全过程.