cookie 和 session 的区别以及用法

2017-11-21  本文已影响0人  胡自鲜

1.cookie

cookie 是存储在浏览器客户端的一小段数据,可以同时被前台与后台操作,cookie可以跨页面 存取 cookie不可以跨服务器访问,但可以跨域cookie是有生命期的,默认是与浏览器进程相同,如果进程退出,cookie会被销毁。

在控制台输入document.cookie可以查看cookie

image.png

1.1 cookie获取与设置

将cookie的设置和获取在js文件中封装成函数,下次再用到的时候直接引入该js文件,调用其方法就行

function setCookie(name,value,path,expires){
    //设置一天之后失效
    var current_data = new Date();
    //将日期设置为一天之后的日期
    current_data.setDate(current_data.getDate() + expires);
    //将日期转成GMT字符串
    var expirse_str = current_data.toGMTString();
    //设置cookie过期日期
    document.cookie = name+"="+value+"; path="+path+"; expires="+expirse_str;
}
function getCookie(name){
    var str = document.cookie;
    var start = str.indexOf(name+"=")+(name.length)+1;
    end = str.indexOf(";",start);
    end = end == -1 ? str.length : end;
    val = str.substring(start,end);
    return val; 
}

1.2 参数:cookie除了值,其余的属性是只写

属性 描述
name 名字
value
path 指定cookie生效的路径 / 全站,path=/seven/front" 表示只在front目录下生效,包含其子目录
expirse 设定cookie的生命期,它的值是一个字符串,需要把过期日期转变成字符串toGMTString()

1.3 特点:

1.cookie是不安全的,可以被客户端更改,因此不要用cookie来存储重要或者敏感数据。所以:
  将登陆信息等重要信息存放为SESSION;其他信息如果需要保留,可以放在COOKIE中
2.可以跨页面获取cookie
3. cookie并不能无限制的存储,它是有限制的
    (1) 数量:浏览器下的cookie数量不能超过100个
    (2)每个服务器不能超过20个
    (3) 所有的cookie包含他们的属性所占据的数据大小不能超过4K 

2. session

session其实指的就是访问者从到达某个特定主页到离开为止的那段时间。 Session其实是利用 Cookie进行信息处理的,当用户首先进行了请求后,服务端就在用户浏览器上创建了一个
Cookie,当这个Session结束时,其实就是意味着这个Cookie就过期了。session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息。当程序需要为某个客户端的请求创建一个session时,服务器首先检查这个客户端的请求里是否已包含了一个session标识(称为session id),如果已包含则说明以前已经为此客户端创建过session,服务器就按照session id把这个session检索出来使用(检索不到,会新建一个),如果客户端请求不包含session id,则为此客户端创建一个session并且生成一个与此session相关联的session id,session id的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串,这个session id将被在本次响应中返回给客户端保存。保存这个session id的方式可以采用cookie,这样在交互过程中浏览器可以自动的按照规则把这个标识发送给服务器。一般这个cookie的名字都是类似于SEEESIONID。但cookie可以被人为的禁止,则必须有其他机制以便在cookie被禁止时
仍然能够把session id传递回服务器。

注:为这个用户创建的Cookie的名称是aspsessionid。这个Cookie的唯一目的就是为每一个用户提供不同的身份认证。

3. cookie和 session的共同之处在于:

cookie和session都是用来跟踪浏览器用户身份的会话方式。session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,如果主要考虑到减轻服务器性能方面,应当使用COOKIE

4. cookie 和 session的区别是:

1、cookie数据存放在客户的浏览器上,session数据放在服务器上。
2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗考虑到安全应当使用session。
3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能考虑到减轻服务器性能方面,应当使用COOKIE。
4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20cookie。
5、所以个人建议:
将登陆信息等重要信息存放为SESSION
其他信息如果需要保留,可以放在COOKIE中
上一篇下一篇

猜你喜欢

热点阅读