http状态管理:cookie与session

http状态管理:cookie与session


http本身没有状态也没有记忆,但是如果这样的话,如果后一次需要先前的信息,就会重新传送大量信息。当网站出现以后,http这种特性就大大阻碍了网站发展(你不能做每次操作都得让用户输入登录密码)所以就出现了coookie和session。

cookie在客户端,session在服务端

(开了咖啡店,顾客喝十杯送一杯,如何记住顾客喝了十杯?
卡在客户手里,签到系统在店主这边)

Cookie

◆Cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就向客户端浏览器颁发一个Cookie。
◆客户端浏览器会把Cookie保存起来。 当浏览器再请求该网站时浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态,服务器还可以根据自己的需要修改cookie的内容
在这里插入图片描述查看当前网站的cookie的快捷方法
在浏览器的地址栏输入:javascript:alert(document.cookie) (不区分大小写),就会弹出你在当前网页登录的cookie信息。(火狐好像不支持这个操作,IE可以)

注意:你把以上复制进入地址栏后会发现,“javascript”字符串消失不见,不管“javascript”里面哪一个字母被大写或小写,只要识别为“javascript”就会自动被过滤隐藏消失。

你应该复制下面这个到地址栏(粘贴到地址栏后再把前面的“1”去掉):

1javascript:alert(document.cookie)

弹出的cookie信息:
在这里插入图片描述不同的浏览器采用不同的方式保存Cookie。
IE浏览器会在“C:\Documents and Settings\你的用户名\Cookies”文件夹下以文本文件形式保存,一个文本文件保存一个Cookie。

cookie的工作原理
可总结如下:client连接server
client生成cookie(有效期),再次访问时携带cookie
server根据cookie的信息识别用户身份

在这里插入图片描述

Session

◆Session是服务器端使用的一种记录客户端状态的机制,使用上比Cookie简单一些。保存在服务器上。客户端浏览器访问服务器的时候,如果服务器启用session,就要为这个用户创建一个session,检查这个用户有没有一个session id,如果有的话说明之前创建过,没有的话就心创建一个。

◆服务器把客户端信息以某种形式记录在服务器上

客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了

同一个客户端每次和服务端交互时,不需要每次都传回所有的 Cookie 值,而是只要传回一个 ID,这个 ID 是客户端第一次访问服务器的时候生成的,而且每个客户端是唯一的。这样每个客户端就有了一个唯一的 ID,客户端只要传回这个 ID 就行了,这个 ID 通常是 name为 JSESIONID 的一个 Cookie。Session依据这个id来识别是否为同一用户(只认ID不认人)。

session的原理
在这里插入图片描述保存Session ID的方式
◆Cookie
因为有时候可以把浏览器的cookie禁止,这个时候session也就没用了,所以还有URL重写
◆URL重写
将session id 直接附加在url后面,
形式1:作为url的附加信息
在这里插入图片描述形式2:作为一个参数放在url里
在这里插入图片描述◆隐藏表单
服务器自动修改表单,添加一个隐藏的字段,以便表单提交时候能够把session id传递到服务端上

session的有效期
会有越来越多的用户访问服务器,所以就会有越来越多的session,当访问增多,会比较占用你服务器的性能,所以超过一定时间没有动作的session,会失效
主动失效:
程序调用HttpSession.invalidate()
服务器进程被停止,session失效

区别

cookie相当于检查客户身上的通行证,session则是检查服务器上的客户明细表(相当于建了客户档案表)
1.cookie数据存放在客户的浏览器上,session数据放在服务器上。

2.cookie不是很安全,存储在浏览器里,对客户端来说是可见的,客户端的一些程序可能会复制,修改cookie,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗

3考虑到减轻服务器性能方面,应当使用COOKIE。(可以像谷歌一样,把COOKIE的信息加密,提交到服务器端以后,再进行解密。保证COOKIE中的信息只有服务器才能读懂)

4.session存放在服务器上,不存在敏感信息泄露的风险,考虑到安全应当使用session。

5.session会在一定时间内保存在服务器上(一般只有关闭浏览器,这个session就失效了)。当访问增多,会比较占用你服务器的性能,cookie的有效时间都特别久,甚至可以做到永远,cookie保存在客户端,不太造成服务器的压力

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值