`
阅读更多
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,将需要记录的信息保存在客户端,每次请求时发送到服务器端,服务器端不保留状态信息,避免在服务器端多台机器上复制会话而造成的性能下降。
分享到:
评论

相关推荐

    python cookie反爬处理的实现

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

    官方标配: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:...

    C#.net与vb.net中读写Cookie的方法

    创建Cookie方法 (1) Response.Cookies["userName"].Value = “admin"; Response.Cookies[“userName”].Expires = DateTime.Now.AddDays(1); //如果不设置失效时间,Cookie信息不会写到用户硬盘,浏览器关闭将会丢弃...

    利用Cookie实现十天免登录

    浏览器接收到来自服务器的Cookie数据之后默认将其保存在浏览器缓存中(如果浏览器关闭,缓存消失,Cookie数据消失),只要浏览器不关闭,当我们下一次发送“特定”请求的时候,浏览器负责将Cookie数据发送给WEB...

    PHP如何获取Cookie并实现模拟登录

    一、定义Cookie存储路径 必须使用绝对路径 $cookie_jar = dirname(__FILE__).”/pic.cookie”; 二、获取Cookie 将cookie存入文件 $url = "http://1.2.3.4/"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $...

    Session Cookie的HttpOnly和secure属性

    如果在Cookie中设置了"HttpOnly"属性,那么通过程序(JS脚本、Applet等)将无法读取到Cookie信息,这样能有效的防止XSS攻击。 对于以上两个属性, 首先,secure属性是防止信息在传递的过程中被监听捕获后信息泄漏,...

    jQuery的Cookie插件 cookies

    jQuery的Cookie插件 cookies cookies 是一个强大的 jQuery 用来操作 Cookie 的插件。除了常见的操作 $.cookies.set( 'sessid', 'dh3tr62fghe' ); var sessid = $.cookies.get( 'sessid' ); $.cookies.del( 'sessid...

    cookie购物车cookie购物车cookie购物车

    cookie购物车cookie购物车cookie购物车cookie购物车cookie购物车cookie购物车cookie购物车cookie购物车cookie购物车cookie购物车cookie购物车cookie购物车

    使用Cookie实现商品的浏览记录功能

    使用cookie机制实现商品的浏览历史记录功能 主要的实现思路就是通过每次点击商品查看信息的时候 传递一个商品编号 然后保存在cookie中 然后从cookie中取出来 去数据库执行相关的查询操作 之后再到页面上进行显示就ok...

    C#操作cookie,解密加密cookie

    C#操作cookie,解密加密cookie

    Cookie,Cookie的使用

    说起来,Cookie应该是一种应用较久的技术了。早在HTML刚刚出现的时候,在每个独立的页面之间没有办法记录和 标识不同的用户。后来人们就发明了Cookie技术,当用户访问网页时,它能够在访问者的机器上创立一个文件,...

    FlashCookie 不被浏览器清除的Cookie

    FlashCookie 不被浏览器清除的Cookie 不被浏览器清空的Cookie

    cookie读写,子cookie

    cookie读写工具类,子cookie读写工具类

    JavaScript数据存储 Cookie篇

    1.什么是cookie?  答:cookie是用于在客户端存储会话信息的。 2.cookie的组成部分?  ①名称:一个唯一确定cookie 的名称。建议区分大小写。cookie 的名称必须是经过URL 编码的。  ②值:储存在cookie 中的字符...

    jquery.cookie.js

    jquery.cookie.js 对cookie的操作 $.cookie('the_cookie'); //读取Cookie值 $.cookie('the_cookie', 'the_value'); //设置cookie的值 $.cookie('the_cookie', 'the_value', {expires: 7, path: '/', domain: 'jquery...

    正确处理浏览器的甜点——Cookie保证上网安全

    Cookie是利用了网页代码中的HTTP头信息进行传递的,浏览器的每一次网页请求,都可以伴随Cookie传递。服务器将Cookie添加到网页的HTTP头信息中,伴随网页数据传回到你的浏览器,浏览器会根据你电脑中的Cookie设置选择...

    jQuery插件Cookie操作jQuery.Cookie

    jQuery操作cookie的插件,大概的使用方法如下$.cookie('the_cookie'); //读取Cookie值$.cookie(’the_cookie’, ‘the_value’); //设置cookie的值$.cookie(’the_cookie’, ‘the_value’, {expires ‘/’, domain ...

    browser-cookie 获取浏览器cookie

    如何获取浏览器的cookie

    cookie设置插件jquery.cookie.min.js

    cookie设置插件jquery.cookie.min.js 文章《javascript设置cookie高级篇可跨域访问》https://blog.csdn.net/cplvfx/article/details/117822956

    官方jquery.cookie.js带demo

    jQuery cookie是个很好的cookie插件,大概的使用方法如下 example $.cookie(’name’, ‘value’); 设置cookie的值,把name变量的值设为value example $.cookie(’name’, ‘value’, {expires: 7, path: ‘/’, ...

Global site tag (gtag.js) - Google Analytics