`
wu_quanyin
  • 浏览: 208155 次
  • 性别: Icon_minigender_1
  • 来自: 福建省
社区版块
存档分类
最新评论

Cookie理解

    博客分类:
  • J2EE
阅读更多
一,cookie的定义
1, Cookie是由服务器端生成,发送给User-Agent(一般是浏览器),浏览器会将Cookie的key/value保存到某个目录下的文本文件内,下次请求同一网站时就发送该Cookie给服务器(前提是浏览器设置为启用cookie)。Cookie名称和值可以由服务器端开发自己定义,对于 JSP而言也可以直接写入jsessionid,这样服务器可以知道该用户是否合法用户以及是否需要重新登录等。

2,Cookie的存在是要解决HTTP协议本身先天的缺陷-无状态性,它为用户保存了一些需要的状态信息。因此我们解决此问题的最本质的出发点,也就是找到一种途径能为用户保存Cookie所提供用户状态信息,实际上就是Name/Value对。
二,用途
  1,服务器可以利用Cookies包含信息的任意性来筛选并经常性维护这些信息,以判断在HTTP传输中的状态。Cookies最典型的应用是判定注册用户是否已经登录网站,用户可能会得到提示,是否在下一次进入此网站时保留用户信息以便简化登录手续,这些都是Cookies的功用。
    2,另一个重要应用场合是“购物车”之类处理。用户可能会在一段时间内在同一家网站的不同页面中选择不同的商品,这些信息都会写入Cookies,以便在最后付款时提取信息。
三,工作原理
-------------------------------------
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服务器。
--------------------------------------------------------------------

Cookie规范对于一个浏览器同时能够存储的Cookie数量作出了规定。

    * 总共300 个cookie
    * 每个Cookie 4 K 的存储容量
    * 每一个domain 或者 server 20 个cookie。



关于Session的考虑

在研究完如何管理和传递Cookie之后,我们也需要研究一下Session的传递。因为目前大部分站点都在采用Session机制保存用户状态数据,如果不能解决Session的传递问题,HTTP应用代理服务器的适用范围同样会大打折扣。

首先我们了解一下Session的实现机制。Session是一种服务器端的机制,服务器使用一种类似于散列表的结构来保存信息。当程序需要为某个客户端的请求创建一个session的时候,服务器首先检查这个客户端的请求里是否已包含了一个session标识 - 称为session id(jsessionid=...),如果已包含一个session id则说明以前已经为此客户端创建过session,服务器就按照session id把这个session检索出来使用(如果检索不到,可能会新建一个),session id的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串。

保存这个session id的方式之一就是采用Cookie。一般这个Cookie的名字都类似于 SESSIONID。比如WebSphere对于Web应用程序生成的Cookie:JSESSIONID= 0001HWF4iVD94pY8Cpbx6U4CXkf:10lro0398,它的名字就是 JSESSIONID。

保存session id的其他方式还包括(URL重写)和(表单隐藏字段)。这两种方式都不需要代理服务器作特殊处理。因此实际上,我们解决了Cookie的管理和传递的问题之后,也就解决了Session的管理和传递。





分享到:
评论

相关推荐

    Android Cookie 深度理解

    总结,理解并正确使用Cookie对于Android开发者来说至关重要,无论是为了实现用户登录状态的保持,还是提供个性化的用户体验,都需要对Cookie有深入的认识。在实际开发中,应遵循最佳实践,确保用户数据的安全性和...

    cookie读写,子cookie

    理解Cookie的读写和子Cookie的概念,以及如何利用工具类进行操作,对于任何Web开发者来说都是至关重要的技能。通过熟练掌握这些知识,你可以更有效地构建和维护具有用户会话管理等功能的Web应用。

    C#操作cookie,解密加密cookie

    在IT领域,尤其是在Web开发中,Cookie的管理与安全至关重要。C#作为一种广泛使用的编程语言,在处理Cookie方面提供了丰富的功能,包括对Cookie的加密与解密。本文将深入探讨如何在C#中操作Cookie,以及如何实现...

    对session和cookie的深刻理解

    ### 对Session和Cookie的深刻理解 #### Session与Cookie的基本概念 在Web开发中,了解Session和Cookie是非常重要的,因为它们是实现用户会话管理和状态跟踪的关键技术。简单来说,Session和Cookie都用于存储用户...

    对session和cookie的一些理解

    标题中的“对session和cookie的一些理解”提示我们,这篇内容将涉及Web开发中两种重要的用户会话管理技术:Session和Cookie。在Web应用中,Session和Cookie被广泛用于跟踪用户的登录状态、购物车信息等,确保用户在...

    微信小程序cookie维护插件 实现自动设置获取cookie功能

    首先,理解Cookie的基本概念。Cookie是由服务器端生成,发送到客户端(浏览器)的一小段文本信息,客户端每次向服务器发送请求时,都会将Cookie一并发送回去。在微信小程序中,虽然没有浏览器环境,但可以通过模拟...

    cookie记住账号密码

    - **源码**:实现“记住账号密码”功能可能需要查看和理解Web应用的源代码,尤其是处理登录和Cookie的部分,了解其工作逻辑。 - **工具**:开发者可能需要使用浏览器的开发者工具来调试Cookie,查看其设置和传输...

    FlashCookie 不被浏览器清除的Cookie

    FlashCookie,也称为Local Shared Objects (LSO),是Adobe Flash Player为存储用户特定数据而引入的一种机制。...理解其工作原理以及如何管理和保护自己免受潜在风险的影响,对于网络用户和开发者来说都至关重要。

    cookie分析工具

    了解Cookie分析工具对于理解网络浏览行为、隐私保护以及网站优化具有重要意义。 **Cookie基础知识** 1. **什么是Cookie**:Cookie是服务器发送到用户浏览器并存储在本地的一小块数据。它们包含了用户与网站交互的...

    易语言取设cookie

    通过阅读和学习这个源码,你可以更深入地理解如何在易语言环境中处理网络请求和响应,以及如何利用Cookie来维护用户状态。 总结来说,易语言的“取设cookie”功能是网络编程中的核心部分,对于开发基于HTTP协议的...

    桂林老兵cookie欺骗工具

    这个工具因其在Cookie管理及欺骗技术方面的应用而知名,尤其对于理解Web安全和防御策略的专家来说,它是一个重要的学习和实践平台。 Cookie是网站在用户浏览器上存储的小型文本文件,通常用于识别用户会话、个性化...

    cookie接口 实现本地或客户端的cookie的创建和读取

    在IT行业中,Cookie是Web...通过查看和运行这些代码,你可以更深入地理解如何在Java Web应用中处理Cookie。确保在实际应用中遵循HTTP协议和相关的安全最佳实践,以保护用户数据并防止跨站脚本攻击(XSS)等安全问题。

    20210820cookie万能获取助手.rar

    标题中的“20210820cookie万能获取助手.rar”暗示这是一款在2021年8月20日发布的工具,主要用于获取Web应用程序的Cookie信息。...同时,对于网络安全而言,理解如何保护自己的Cookie不被滥用也是至关重要的。

    原生登录cookie保持提供webview使用

    首先,我们需要理解cookie的工作原理。Cookie是服务器在客户端存储的小型文本文件,通常用于跟踪用户会话、存储用户偏好或验证用户身份。在Web浏览器中,当用户访问一个网站并登录时,服务器会返回一个包含session ...

    cookie

    标签“源码”意味着该文章可能包含了对Cookie机制的源代码解析,帮助读者理解其内部工作流程。而“工具”可能指的是与Cookie管理相关的开发者工具或者辅助库,如浏览器的开发者工具或者某种编程框架提供的Cookie操作...

    jquery.cookie.js 存取cookie例子

    在网页开发中,Cookie是一种非常重要的技术,用于存储客户端的小量数据。`jQuery.cookie.js` 是一个...通过理解并熟练运用这些方法,开发者可以轻松地在客户端实现数据的持久化存储,提升网页应用的功能性和用户体验。

    Cookie简介及JSP处理Cookie的方法.doc

    Cookie是Web开发中的一种技术,用于在客户端存储和管理数据,解决了HTTP协议无状态的问题。它们是由服务器端生成,发送到客户端(浏览器),并由...理解并熟练掌握Cookie的使用对于任何Web开发者来说都是至关重要的。

    jquery-cookie

    **jQuery Cookie插件详解** jQuery Cookie是一个非常实用的JavaScript库,它为jQuery提供了一种简单的方式来操作浏览器的Cookie。...正确理解和使用jQuery Cookie,可以极大地提高Web应用的用户体验和功能性。

    使用Cookie记录用户名和密码

    首先,我们需要理解Cookie的基本原理。当用户成功登录后,服务器可以创建一个包含用户名和加密后的密码(或仅存储一个唯一的会话ID)的Cookie,并将其发送到用户的浏览器。这个Cookie通常具有一个过期时间,可以是...

    jquery.cookie.js 以及用法 cookie读取与存储

    **jQuery Cookie插件:深入理解与使用** 在Web开发中,Cookie是一种常用的数据存储机制,它允许我们在用户浏览器端保存少量信息。`jquery.cookie.js`是jQuery的一个扩展插件,为开发者提供了简单易用的API来操作...

Global site tag (gtag.js) - Google Analytics