session和cookie的区别
给大家讲解一下以我的理解什么是session和cookie,session和cookie是网络编程中很重要的东西,其实它们的本质上都是用来储存个人信息的,但是它们又有很大的不同。
Session的中文意思为会话、会议,它保存在服务器端,当访问者进行访问网站的时候,服务器就会分配、划分一个内空间内存区域来单独存放访问者和网站之间的会话信息。当你断开访问网站的时候,意味着会话结束,session就会被清空。但是继续访问网站或者断开访问后session在一定时间中存储的信息还会存在。Session保存的时间很短,一般可以保存30分钟左右,也可以更短,可以在一定范围内设置。
Cookie原意是曲奇饼干,它是一种数据记录的格式。它保存在浏览器,比如登录一个软件,输入用户信息,cookie会把用户信息存放在浏览器,浏览器以一个数据文件保存在浏览器内部。当我再次登录软件的时候,服务器对浏览器生成了cookie的要求,浏览器把保存好的cookie发送给软件的服务器,软件的服务器再对cookie进行解析,拿到登录用户信息,然后就自动登录。所以平时我们在一些软件里登录了之后,在一段时间里它还是会处于自动登录状态,但是在一段时间之后就需要重新登录。其实cookie有一个有效时间,当它过期后,浏览器就会把它删除。
HTTP是超文本传输协议的缩写,是一种详细规定浏览器和万维网服务器之间互相通信的规则通过互联网传送万维网文档的数据传送协议。HTTP协议是用于从www服务器传输超文本到本地浏览器的传输协议,是一种无状态的协议,也是一个标准的客户端服务器模型。什么是无状态,协议对于事务处理没有记忆能力。如果服务器无法获取代表身份的标识符,就无法识别对方的一个身份,所以在每次需要发送数据,都要进行发送代表身份的标识符,这样子就很麻烦,对网络的传输不便利。所以就用上了一个用户追踪,所以就有了session和cookie。
相对于cookie来说,session的安全性会更高一些,因为会话结束后一般不会进行保留。但是比如经常登录一些软件,就需要用到cookie,不需要每次登陆这么麻烦,在一段时间里可以自动登录。cookie保存的时间更长一些,可以自己设置时间段,如果不想保存cookie里面的数据也可以忘记或者删除cookie。
Session的使用可以直接存放数据,也可以直接拿出来。清空session用到了clear,从会话状态集合中移除所有的数据。
cookie的获取需要这样子写才能拿到数据,获取客户端发送的Cookie的集合。
cookie的使用首先要创建并命名一个new的cookie对象,然后可以给cookie设置Expires过期时间和日期,可以让它在多久的时间内保存,然后就和session用法差不多了。把数据存到cookie里面,然后Response回应,服务器给浏览器发送添加新的cookie的回应,浏览器接收到回应后就设置cookie。除了Response,还有一个Request请求,浏览器发送给服务器的请求。
在这里为什么忘记cookie又创建和命名一个新的cookie呢,实际上忘记cookie和保存cookie的用法是一样的,设置cookie的保存时间为负数,有效时间设置为昨天,强制使cookie过期,那么浏览器就会自动删除cookie。
肯定有人会想为什么不直接写移除的方法呢,事实上提示是有删除Remove这个方法的,但是Remove这个方法对于浏览器是不起效,不执行的,所以会报错。所以浏览器只有Add添加这个方法。我们重新添加一个相同名称的cookie,为什么是相同的名称,设置相同的名称的cookie,就会把前面那个cookie给覆盖掉,但是又由于这个cookie过期了,就只能删除了。
如果哪里分析不够恰当或者不清晰的地方请海涵,还可以在评论下面进行点评和指正~