session和cookie

介绍一下http请求里的session和cookie吧~

session

session是一种让服务器保存用户登录信息的手段. 服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息. 即就是用户登陆页面保存的账号和密码以 key-value的形式存储在服务端.

由于http是无状态的, 因此无法记录客户一连串的动作, 必须有一种机制使服务器能认得客户, 这就引入了"会话"的概念.

会话: 是指一个终端用户与交互系统进行通讯的过程. 举个例子: 从输入账户密码进入操作系统到退出操作系统就是一个会话过程.

服务器发给客户一个会话ID, 当客户再次访问服务器时就带着这个ID, 服务器就凭着这个唯一的ID来识别用户.

session代表服务器与浏览器的一次会话过程, 这个过程是连续的, 也可以是时断时续的.

在打开浏览器进行第一次请求时, 服务器会自动为这个请求创建一个session, 并赋予其一个 session id, 然后发送给客户端的浏览器. 以后客户端再次请求本应用中其他资源的时候, 会自动在请求头上添加:(Cookie: SESSION ID = 客户端第一次拿到的session ID), 这样的话, 服务器在接到请求的时候, 就会收到session ID, 并根据ID在内存中找到之前创建的session对象.

但程序需要为某个客户端的请求创建一个session的时候, 服务器首先检查这个客户端的请求里是否包含了session id, 如果已经包含一个session id, 则说明以前已经为此客户创建过session, 服务器就按照session id把这个session检索出来使用. 如果检索不到, 可能会新建一个, 这种情况可能出现在服务端已经删除了该用户对应的 session 对象.

由于关闭浏览器不会导致session被删除, 迫使服务器为session设置了一个失效时间, 当距离客户端上一次使用session的时间超过这个失效时间时, 服务器就可以认为客户端已经停止了活动, 才会把session删除以节省存储空间.

session的作用: 保持当前会话的安全. session的信息是保存在服务端的(一般是保存在服务端的内存), 用户请求是通过session ID进行请求, 每次请求服务器会根据session ID进行身份验证.

cookie

cookie本质是保存客户端信息的一种方式, 由浏览器来维持. cookie如果不设置过期时间, 那么生命周期为浏览器会话期间, 否则生命周期会一直持续到浏览器关闭. 只要关闭浏览器窗口, cookie就消失了

cookie的作用: 将用户的信息保存在客户端

cookie的一般使用场景: 一般网站上, 当客户端登录页面的时候, 可以通过客户端代码直接从本地文件夹获取到登录信息, 帮助填充到他自己表单的账号密码里面去, 而不用自己手动输入.

区别:

1. session存放在服务器端, cookie以文本文件格式存放在客户端浏览器上

2. session会随着会话的结束而关闭, cookie则存放在客户端浏览器上长期有效.

   cookie就相当于外用硬盘, 暂时记录信息, 可删除.  session存在于内存中, 不会由于退出就消失

3. session保存的是对象, cookie保存的是字符串

4. 可以轻松访问cookie值, 但是我们无法轻松访问session会话值. 是因为存放在cookie里的信息容易泄露, 通常只保存不重要的信息,  因此session更安全, 重要信息放在session中.

5. 因为每次发起http请求, 都要携带有效cookie信息, 所以cookie一般都有大小限制, 以防止增加网络压力, 一般不超过4K

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值