首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

session与cookie

session与cookie

首先,先来看一下会话的概念;

想必大家都听说过HTTP协议吧。这里不做过多的表述,不同自行百度即可;

说一下HTTP协议的最突出的特点就是一种无状态的协议,一旦数据交换完毕,就会关闭连接,如果需要再次交换新的数据,就需要重新建立连接,这样服务器端是无法跟踪上一次的会话,服务端会把它作为新的客户端来处理,那么会出现以下的场景:

A 买了商品A,B买了商品B,最后商品A放入了B的购物车中,B放进了A的购物车中

这样的情形是我们不愿意看到的,我们想要的是重新登录或者返回上一个页面,我们所保存的东西依旧属于自身,而不是发生混乱,所以,我们必须引入一种会话机制来处理这种现象。

其实,对于会话这个东西我们已经很熟悉了,我们在使用网站的时候,本地或者服务端会将你的登录信息根据一定的规则进行保存,这样你跳转页面时,就会一直保存状态

cookie

简介cookie机制

Cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。服务器还可以根据需要修改Cookie的内容。

Cookie技术是客户端的解决方案,Cookie就是由服务器发给客户端的特殊信息,而这些信息以文本文件的方式存放在客户端,然后客户端每次向服务器发送请求的时候都会带上这些特殊的信息;

我们打开网页也可以看到这个字段:

基本流程就是:

客户端发送一个http请求到服务器端

服务器端发送一个http响应到客户端,其中包含Set-Cookie头

客户端发送一个http请求到服务器端,其中包含Cookie头部

服务器端发送一个http响应到客户端

对于cookie的应用,一般是Web开发中使用的多一点,目前由于Session的出现,使用session会越来越多,对于服务端开发的人来说,这两种机制都需要了解一下;

在JAVA中集成cookie的所有方法,供我们调用开发,具体不在赘述;

后续会有案例来说明;;

session

Session是服务器端使用的一种记录客户端状态的机制,使用上比Cookie简单一些,相应的也增加了服务器的存储压力;

过程:

浏览器第一次请求服务器时,服务器会生成一个sessionid,并返回给浏览器,这个sessionid会被保存在浏览器的会话cookie中

如果浏览器不关闭,浏览器每次请求的时候回携带sessionid到服务端;

session有过期时间,但是这是可以设置的;如果超过这个时间点,sessionid过期后,会产生新的sessionid出来;

Cookie与Session的区别

cookie数据存放在客户的浏览器上,session数据放在服务器上;

cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,考虑到安全应当使用session;

session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能。考虑到减轻服务器性能方面,应当使用COOKIE;

单个cookie在客户端的限制是3K,就是说一个站点在客户端存放的COOKIE不能超过3K;

总结

虽然Cookie和Session的方案分别属于客户端和服务端,但是服务端的session的实现对客户端的cookie有依赖关系的,通过上面使用session机制时候会生成session的id值,这个id值会发送给客户端,客户端每次请求都会把这个id值放到http请求的头部发送给服务端,而这个id值在客户端会保存下来,保存的容器就是cookie;所以当完全禁掉浏览器的cookie的时候,服务端的session也会不能正常使用;当然还有另外一种实现session的方法,但是主要使用的是依赖cookie这种方式来进行的;

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200222A05HR200?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券