码迷,mamicode.com
首页 > 其他好文 > 详细

cookie是啥?

时间:2019-11-13 00:50:30      阅读:89      评论:0      收藏:0      [点我收藏+]

标签:现在   过程   写入   这一   strong   语义   exp   客户端   禁用   

 

HTTP是无状态(stateless)协议

http协议是无状态协议即不保存状态。

技术图片

无状态协议的优点:

由于不需要保存记录,所以减少服务器的CPU和内存的资源的消耗。毕竟客户端一多起来保存记录的话对于服务器端来说是一个巨大的消耗。

无状态协议的缺点:比如当用户登录到淘宝,他转跳到淘宝的其他页面后,也需要保持登录状态。针对这种情况,web为了能够掌握是谁发送出的请求,需要保存用户的状态。如何保存呢?那就是cookie技术。

两种用于保持HTTP连接状态的技术:一个是Cookie,而另一个则是Session。这两种技术的大致思路是:当客户端发起第一次请求时,服务器会建立与客户端的会话(Session),并将会话的唯一标识符(Session ID)传送给客户端,服务器可以将一些信息保存在会话级别,当客户端发起第二次请求时,客户端会将Session ID作为Request一部分(Header或URL中)传送给服务器,服务器通过Session ID来获取会话级别的信息。通过这样的方式,客户端和服务器可以减少网络交互的数据量。当客户端将服务器传送过来的Session ID存储到用户本地终端或者浏览器的内存中时,这里就用到了Cookie技术。

  服务器将会话级别的数据存储在内存中,当并发数比较大时,这将大大消耗服务器的内存。如果在集群环境下,各个节点需要同步Session,大量的Session内容同步同样会消耗服务器的性能,所以我们只需要将一些关键信息放入到会话级别。

Cookie详解

  Cookie是由服务器端生成,发送给User-Agent(一般是浏览器),浏览器会将Cookie的key/value保存到某个目录下的文本文件内,下次请求同一网站时就发送该Cookie给服务器(前提是浏览器设置为启用Cookie)。这些文件通常是以user@domain格式命名的,user是你的本地用户名,domain是所访问的网站的域名。Cookie名称和值可以由服务器端开发自己定义,对于JSP而言也可以直接写入jsessionid,这样服务器可以知道该用户是否合法用户以及是否需要重新登录等。

  Cookies有什么作用呢?现在上许多网站都用新用户注册这一项,有时注册了一下,等到下次再访问该站点时,会自动识别到你,并且向你问好,是不是觉得很亲切?当然这种作用只是表面现象,更重要的是,网站可以利用cookies跟踪统计用户访问该网站的习惯,比如什么时间访问,访问了哪些页面,在每个网页的停留时间等。利用这些信息,一方面是可以为用户提供个性化的服务,另一方面,也可以作为了解所有用户行为的工具,对于网站经营策略的改进有一定参考价值。

  Cookie在生成时就会被指定一个Expire值,这就是Cookie的生存周期,在这个周期内Cookie有效,超出周期Cookie就会被清除。有些页面将Cookie的生存周期设置为“0”或负值,这样在关闭页面时,就马上清除Cookie,不会记录用户信息,更加安全。

  IE可以通过菜单来禁用Cookie:工具 > Internet选项 > 隐私页,然后调节滑块或者点击“高级”。

Session详解

  我们可以把客户端浏览器与服务器之间一系列交互的动作称为一个 Session。从这个语义出发,我们会提到Session持续的时间,会提到在Session过程中进行了什么操作等等;其次,Session指的是服务器端为客户端所开辟的存储空间,在其中保存的信息就是用于保持状态。从这个语义出发,我们则会提到往Session中存放什么内容,如何根据键值从 Session中获取匹配的内容等。

cookie是啥?

标签:现在   过程   写入   这一   strong   语义   exp   客户端   禁用   

原文地址:https://www.cnblogs.com/wqbin/p/11846224.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!