session与cookie的区别

一 概念理解

1 无状态的http协议

   协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则,超文本传输协议(HTTP)是一种传输协           议,它允许将超文本标记语言(HTML)文档从web服务器传到客户端的浏览器

   HTTP协议是无状态协议,一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接,这就意味       着服务器无法从连接上跟踪会话

2 会话跟踪

    会话,指用户登录网站后的一系列动作,比如浏览商品添加到购物车并购买。会话跟踪是web程序的常用技术,用来跟踪用户的整个会话。常用跟踪技术有Cookie与Session。Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份

 二 Cookie

      由于http是一种无状态的协议,服务器单从网络连接上无法知道客户的身份。比如用户A购买了一件商品放入购物车内,当使用购买时,服务器已经无法判断该商品的购买行为是来自与A用户还是B用户。怎么办?就给客户端颁发一个通行证,每人一个,无论谁访问都必须携带自己的通行证。这样服务器就能从通行证上确定客户身份,这既是Cookie的工作原理。

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

1 会话Cookie和持久Cookie

    若不设置过期时间,则表示这个cookie的生命周期为浏览器会话期间,关闭浏览器窗口,cookie就消失,这种生命周期为浏览器会话期的cookie被称为会话cookie。会话cookie一般不存储在硬盘上而保存在内存里,当然这种行为并不是规范规定的

    若设置过期时间,浏览器就会把cookie保存到硬盘上,关闭后在打开浏览器,这些cookie仍然有效知道超过过期时间,存储在硬盘上的cookie可以在浏览器的不同进程间共享。这种成为持久cookie

2 cookie具有不可跨域名性

   浏览器访问百度就不会带上谷歌的cookie

三 Session

      session是另外一种记录客户状态的机制,不同的是Cookie是保存在客户端浏览器的,而session保存在服务器端上。客户端浏览器访问服务器时,服务器把客户端信息以某种形式记录在服务器上,这就是session。客户端浏览器再次访问时只需要从该session中查找该用户状态就可以了。

每个用户访问服务器都会建立一个session,那服务器是怎么标识用户的唯一身份呢?事实上,用户与服务器建立连接的同时,服务器会自动为其分配一个SessionId

1 两个问题

1:什么东西可以让你每次请求都把sessionID自动带到服务器ne?显然是cookie,如果你想为用户建立一次会话,可以在用户授权成功时给他一个唯一的cookie。当一个用户提交表单时,浏览器会将用户的sessionId自动附加在Http头的信息中,(这是浏览器的自动功能,用户不会察觉到),当服务器处理完这个表单后,将结果返回给sessionId所对应的用户。

2:存储需要的信息,服务器通过seesionId作为key,读写到对应的value,这就达到了保持会话信息的目的

2 session的创建

   当程序需要为某个客户端创建一个session时,服务器首先检查这个客户端是否在请求里包含了sessionId,如果已包含则说明以前已为该客户端创建过session,服务器通过sessionId找到所对应的值(若没有,则创建一个),反之,创建一个新的seesion并且生成一个于此session相关

四 总结

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

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

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

     4 单个cookie保存的数据不能超过4k,很多浏览器都限制一个站点最对保存20个cookie

     5 可以考虑将登录信息等重要信息存放在session,其他信息如果需要保留,可以放到cookie中

五 应用场景

     登录网站,今天输入用户密码登录,第二天再打开很多情况下就直接打开了,这个时候用到的一个机制就是cookie

     session的一个场景就是购物车,添加了商品之后客户端处可以知道添加了哪些商品,而服务器如何判断?通过将一部分信息存储在session里

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值