`
阅读更多
Cookie详解
来源:http://blog.csdn.net/indexchen/archive/2007/04/20/1572170.aspx

背景

在HTTP协议的定义中,采用了一种机制来记录客户端和服务器端交互的信息,这种机制被称为cookie,cookie规范定义了服务器和

客户端交互信息的格式、生存期、使用范围、安全性。

Cookie格式

Cookie中保存的信息都是文本信息,在客户端和服务器端交互过程中,cookie信息被附加在HTTP消息头中传递,cookie的信息由键/值对组成。下面是一个HTTP头中cookie的例子:
Set-Cookie: key = value; Path=/

Cookie中存放的信息包含cookie本身属性和用户自定义属性,一个cookie只能包含一个自定义键/值对。Cookie本身属性有"Comment" 、"Domain"、"Max-Age"、"Path"、"Secure"、"Version"。

Comment属性是cookie的产生着对该cookie的描述;

Domain属性定义可访问该cookie的域名,对一些大的网站,如果希望cookie可以在子网站中共享,可以使用该属性。例如设置Domain为 .bigsite.com ,则sub1.bigsite.com和sub2.bigsite.com都可以访问已保存在客户端的cookie,这时还需要将Path设置为/。

Max-Age属性定义cookie的有效时间,用秒计数,当超过有效期后,cookie的信息不会从客户端附加在HTTP消息头中发送到服务端。

Path属性定义网站上可以访问cookie的页面的路径,缺省状态下Path为产生cookie时的路径,此时cookie可以被该路径以及其子路径下的页面访问;可以将Path设置为/,使cookie可以被网站下所有页面访问。

Secure属性值定义cookie的安全性,当该值为true时必须是HTTPS状态下cookie才从客户端附加在HTTP消息中发送到服务端,在 HTTP时cookie是不发送的;Secure为false时则可在HTTP状态下传递cookie,Secure缺省为false。

Version属性定义cookie的版本,由cookie的创建者定义。

Cookie的创建

Cookie可以在服务器端创建,然后cookie信息附加在HTTP消息头中传到客户端,如果cookie定义了有效期,则本保存在客户端本地磁盘。保存cookie的文件是一个文本文件,因此不用担心此文件中的内容会被执行而破坏客户的机器。支持Web端开发的语言都有创建cookie的方法或函数,以及设置cookie属性和添加自定义属性的方法或函数,最后是将cookie附加到返回客户端的HTTP消息头中。

创建cookie时如果不指定生存有效时间,则cookie只在浏览器关闭前有效,cookie会在服务器端和客户端传输,但是不会保存在客户机的磁盘上,打开新的浏览器将不能获得原先创建的cookie信息。

Cookie信息保存在本地时会保存到当前登录用户专门目录下,保存的cookie文件名中会包含创建cookie所在页面网站的域名,当浏览器再次连接该网站时,会从本机cookie存放目录下选出该网站的有效cookie,将保存在其中的信息附加在HTTP消息头中发送到服务器端,服务器端程序就可根据上次保存在cookie的信息为访问客户提供“记忆”或个性化服务。

Cookie除了可以在服务器端创建外,也可以在客户端的浏览器中用客户端脚本(如javascript)创建。客户端创建的cookie的性质和服务器端创建的cookie一样,可以保存在本地,也可以被传送到服务器端被服务器程序读取。

Cookie的使用

从cookie的定义可以看到,cookie一般用于采用HTTP作为进行信息交换协议的客户端和服务器端用于记录需要持久化的信息。一般是由服务器端创建要记录的信息,然后传递到客户端,由客户端从HTTP消息中取出信息,保存在本机磁盘上。当客户端再次访问服务器端时,从本机磁盘上读出原来保存的信息,附加到HTTP消息中发送给服务器端,服务器端从HTTP消息中读取信息,根据实际应用的需求进行进一步的处理。

服务器端cookie的创建和再次读取功能通常由服务器端编程语言实现,客户端cookie的保存、读取一般由浏览器来提供,并且对cookie的安全性方面可以进行设置,如是否可以在本机保存cookie。

由于cookie信息以明文方式保存在文本文件中,对一些敏感信息如口令、银行帐号如果要保存在本地cookie文件中,最好采用加密形式。

其他

与cookie类似的另一个概念是会话(Session),会话一般是记录客户端和服务器端从客户端浏览器连接上服务器端到关闭浏览器期间的持久信息。会话一般保存在内存中,不保存到磁盘上。会话可以通过cookie机制来实现,对于不支持cookie的客户端,会话可以采用URL重写方式来实现。可以将会话理解为内存中的cookie。

使用会话会对系统伸缩性造成负面影响,当服务器端要在很多台服务器上同步复制会话对象时,系统性能会受到较大伤害,尤其会话对象较大时。这种情况下可以采用cookie,将需要记录的信息保存在客户端,每次请求时发送到服务器端,服务器端不保留状态信息,避免在服务器端多台机器上复制会话而造成的性能下降。
分享到:
评论

相关推荐

    cookie读写,子cookie

    在Web开发中,Cookie是一种非常重要的技术,用于在客户端和服务器之间传递状态信息。Cookie的主要功能包括用户会话管理、个性化设置保存、跟踪用户行为等。在这个“cookie读写,子cookie”主题中,我们将深入探讨...

    关于java应用cookie

    ### 关于Java应用Cookie知识点详解 #### 一、Cookie简介 Cookie是一种常用的技术,用于存储用户的访问信息。在Web开发中,服务器可以将少量的信息发送到客户端浏览器,并存储在客户端,这种信息就是Cookie。当...

    C#操作cookie,解密加密cookie

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

    EditThisCookie.crx cookie编辑导入导出利器

    《EditThisCookie.crx:强大的Cookie管理工具及与curl的集成》 在互联网浏览中,Cookie扮演着重要的角色,它们存储用户信息、保持登录状态、个性化网页内容等。EditThisCookie.crx是一款专为Chrome浏览器设计的强大...

    FlashCookie 不被浏览器清除的Cookie

    FlashCookie,也称为Local Shared Objects (LSO),是Adobe Flash Player为存储用户特定数据而引入的一种机制。不同于传统的HTTP Cookie,这些数据存储在用户的计算机上,不受浏览器的隐私设置或清除浏览器缓存操作的...

    Cookie将用户名和密码加密后存在客户端的Cookie当中

    var UserValue = unescape(allCookies.substring(cookie_User, cookie_UserEnd)); // 提取PwdCookie的值 cookie_Pwd += "PwdCookie".length + 1; var cookie_PwdEnd = allCookies.indexOf(";", cookie_Pwd); ...

    browser-cookie 获取浏览器cookie

    ### browser-cookie3:获取浏览器cookie #### 一、概述 `browser-cookie3` 是一个用于Python 3的库,能够帮助用户将当前浏览器中的cookies提取出来,并存储到一个`cookiejar`对象中,从而实现无需登录即可通过...

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

    本文将详细讲解如何使用微信小程序中的cookie维护插件,实现自动设置和获取Cookie的功能,并特别关注增加的Cookie超时处理机制。 首先,理解Cookie的基本概念。Cookie是由服务器端生成,发送到客户端(浏览器)的一...

    python cookie反爬处理的实现

    Cookies的处理 作用 ...如果在请求的过程中产生了cookie,如果该请求使用session发起的,则cookie会被自动存储到session中. 案例 爬取雪球网中的新闻资讯数据:https://xueqiu.com/ #获取一个sessi

    获取cookie非常好用的google插件

    标题中的“获取cookie非常好用的google插件”指的是在Google Chrome浏览器上的一种扩展程序,它允许用户方便地管理和操作浏览器中的Cookie数据。Cookie是网站在用户计算机上存储的小型文本文件,用于跟踪用户偏好、...

    易语言取设cookie

    在易语言中,“取设cookie”是网络编程中的一个重要概念,主要用于处理网页浏览过程中的数据存储与交互。 Cookie是在HTTP协议下,服务器发送到用户浏览器并保存在本地的一小块数据,它用于记录用户的浏览历史、登录...

    QT访问网页获取Cookie

    在QT中访问网页并获取Cookie是网络编程的一个重要部分,尤其对于需要实现自动化登录、跟踪用户状态或者进行Web服务交互的应用来说。 Cookie是一种在客户端和服务器之间传递信息的小型文本文件。服务器在响应HTTP...

    android cookie获取和设置,webView的cookie的同步

    ### Android Cookie 获取与设置以及 WebView 的 Cookie 同步 在 Android 开发中,Cookie 的管理和同步对于维护用户会话状态至关重要。特别是在使用 HttpClient 发起网络请求时,保持客户端与服务器端 Session 的...

    官方标配:jquery-cookie包括Dome

    $.cookie('the_cookie'); // 获得cookie $.cookie('the_cookie', 'the_value'); // 设置cookie $.cookie('the_cookie', 'the_value', { expires: 7 }); //设置带时间的cookie $.cookie('the_cookie', '', { expires:...

    Java 模拟cookie登陆简单操作示例

    当用户访问某个网站时,该网站可能会将 Cookie 信息写入到用户的浏览器中,以便下次用户访问该网站时能够快速识别用户的身份。 为什么需要模拟 Cookie 登陆? 在实际开发中,我们可能需要模拟用户的登陆行为,以便...

    20210820cookie万能获取助手.rar

    标题中的“20210820cookie万能获取助手.rar”暗示这是一款在2021年8月20日发布的工具,主要用于获取Web应用程序的Cookie信息。Cookie是Web服务器存储在用户浏览器上的一小段数据,用于跟踪用户状态、个性化设置以及...

    桂林老兵cookie欺骗工具

    桂林老兵Cookie欺骗工具是一款在IT安全领域中被广泛讨论的工具,主要用于网络安全研究和测试。这个工具因其在Cookie管理及欺骗技术方面的应用而知名,尤其对于理解Web安全和防御策略的专家来说,它是一个重要的学习...

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

    它的关键方法包括`getName()`(获取Cookie的名称)、`getValue()`(获取Cookie的值)、`setComment()`(设置Cookie的注释)、`setMaxAge()`(设置Cookie的有效期)以及`setPath()`和`setDomain()`(分别用于指定...

    Extjs 关于 cookie的操作

    ### Extjs 中关于 Cookie 的操作 #### 一、引言 在 Web 开发中,Cookie 是一种常用的数据存储方式,用于保存用户的一些基本信息或者状态,从而实现网站的个性化设置或登录状态保持等功能。Extjs 作为一种强大的 ...

    C# Cookie提取工具

    【C# Cookie提取工具】是一种基于C#编程语言开发的应用程序,主要功能是方便用户从指定的网站中高效地提取Cookie信息。这个工具对于开发者、网络分析人员或需要频繁处理网站登录状态的人来说非常实用,因为它能提高...

Global site tag (gtag.js) - Google Analytics