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

cookie和session的区别与联系

时间:2015-10-14 01:35:23      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:

  基本概念

  对于许多人来说,都知道的是,cookie是存储在客户端的,可以用来放需要长期使用的内容,例如用户密码、用户账户等等,服务器是可以获取到cookie的内容的;而session则是存储在服务器端,通过唯一的session_id来区别用户,用于保存用户的登录状态和请求等,客户是不能获取到其内容的。

  这对于许多人来说都是比较基础的内容,也是表现形式上的区别,在这里我们深入的了解一下两者。

  为什么需要cookie?

  对于web程序,有一个需要考虑的问题是如何跟踪用户的会话,照常理来说,一个用户的行为只能对应于一个会话,比如开发购物车应用,就要考虑到用户的购物车中的内容,一个用户的购物车总不能装的是别人的商品吧?跟踪用户的会话就是用来区分不同用户的各自所挑选的商品。

  但是Web应用是基于HTTP协议来传输数据的,而HTTP协议是无状态的,在完成传输数据之后,客户端与服务器端的连接就会关闭,对于不同用户发生“将商品放入购物车”的动作时,不能够判断哪一件商品对应哪一位用户。在这里需要使用cookie,来解决HTTP协议在跟踪会话上的不足。

  cookie是服务器端给客户端分发的一种凭证,客户端要请求服务,就需要在发送数据时的同时发送cookie,服务器端通过识别cookie的内容,得知用户的身份,就可以知道用户的购物车是那一辆,再将商品放进去就可以了。

  cookie的内容

  要查看cookie可以在地址栏输入 javascript: alert(document.cookie); 就可以看到网站分发的cookie了。下面是百度上的cookie内容,在有使用cookie的网站使用才可行。

技术分享

  cookie的内容就是这样的字符串,服务器通过读取这样的长长的加密过的cookie来获取用户的信息,这里有BAIDUID(即我的百度账号),以及其他的信息。

  cookie的分类

  实际上cookie也分为两种,分别是停留在浏览器所占内容的临时性的cookie,在页面窗口关闭之后就被删除,被称为session cookie;而另外一种是通过存放在硬盘空间中长期存在的cookie,这种cookie称为persistent cookie,也就是我们通常意义上所讲的cookie。

  通常session是依赖于session cookie来与客户端交互的,当然session的工作方式不仅仅限于这一种,还有其他的方式在下文会说到。

  cookie的属性

  以下表格是cookie的比较常用的属性及其说明:

属性名    描述
String name 该Cookie的名称。Cookie一旦创建,名称便不可更改
Object value 该Cookie的值。如果值为Unicode字符,需要为字符编码。如果值为二进制数据,则需要使用BASE64编码
int maxAge 该Cookie失效的时间,单位秒。如果为正数,则该Cookie在maxAge秒之后失效。如果为负数,该Cookie为临时Cookie,关闭浏览器即失效,浏览器也不会以任何形式保存该Cookie。如果为0,表示删除该Cookie。默认为–1
boolean secur 该Cookie是否仅被使用安全协议传输。安全协议。安全协议有HTTPS,SSL等,在网络上传输数据之前先将数据加密。默认为false
String path 该Cookie的使用路径。如果设置为“/sessionWeb/”,则只有contextPath为“/sessionWeb”的程序可以访问该Cookie。如果设置为“/”,则本域名下contextPath都可以访问该Cookie。注意最后一个字符必须为“/”
String domain 可以访问该Cookie的域名。如果设置为“.google.com”,则所有以“google.com”结尾的域名都可以访问该Cookie。注意第一个字符必须为“.”

  要注意到cookie的名称是无法修改的,同时cookie并不提供修改和删除的操作,如果说要修改cookie 的内容,则可以新建一个同名的cookie覆盖掉原来的即可;要删除cookie的话则新建一个同名的cookie,并设置其maxAge为0即可。

  需要考虑cookie中maxAge的一些特殊值所代表的含义,如果maxAge为负值,则表示cookie仅仅在当前浏览器窗口以及其打开的子窗口中有效,关闭时则失效,这也是cookie的默认maxAge值;如果maxAge为0,则说明删除该cookie,由于并没有删除cookie的操作,这里是需要通过cookie的maxAge来进行删除操作的。

  seesion的出现

  待补充

cookie和session的区别与联系

标签:

原文地址:http://www.cnblogs.com/s1nker/p/4876284.html

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