美文网首页
Cookie、session与token

Cookie、session与token

作者: 轩小白被使用了 | 来源:发表于2018-12-20 17:15 被阅读0次

    生活中的场景

           当用浏览器浏览过某个网站的的东西后,比如某宝的商品,在之后的时间再次打开浏览器,页面上会出现之前浏览过的相似商品的信息。这是什么原因呢?这是因为本地计算机内还保留着之前登录网站所留下的cookie信息。初次登录网站时,服务器会将一部分内容(比如你所输入的信息)存放在本地计算机内。当登录同一网站时,web服务器会检查是否还有上次留下的cookie资料,有则按照资料里的内容判断推送特定的内容给你。

    cookie

    是什么?

    一小段文本信息。主要包括名字、值、过期时间、路径(Path)和域(domain)。其中路径和域 构成cookie的作用范围。

    工作原理

    客户端访问服务器,如果服务器认为需要记录客户状态,会通过response向客户端浏览器颁发一个cookie。客户端将其保存起来。当浏览器再次访问同一网站时,浏览器将请求网址与该cookie一同交给服务器。服务器会检查该cookie,以辨认用户状态。还可以根据需要更该内容。

    分类

    持久cookie:设置了过期时间,浏览器会将cookie保存在硬盘上。关闭后再次登录仍然有效知道过期时间结束。可在浏览器不同进程间共享

    会话cookie:没有设置过期事件,存在内存里,关闭浏览器窗口就会消失。

    session

    是什么?

    记录客户状态的机制。客户端浏览器访问服务器时,服务器将客户信息以某种形式记录在服务器上。客户再次访问时,服务器从session中检查该客户状态就可以了。

    工作原理

    当客户请求创建一个session时,服务器会先检查客户端请求里是否已经包含sessionid,若是有的话,则将该sessionid检索出来(检索不到,新建一个),不包含sessionid,则新建一个会话,并建立一个与之关联的sessionid。这个sessionid将在本次响应中返回给客户端保存。

    在客户请求时,通过cookie将sessionid传送到服务器。服务器通过sessionid作为key,可以读取到相应的信息,从而达到保持会话的目的。

    禁用cookie

    实现session的方法不依赖cookie

    URL重写:将sessionid值附加在URL路径后面

    表单隐藏字段:浏览器自动修改表单,添加隐藏字段,在表单提交时将sessionid传给服务器。

    sesson共享

    不同网站之间sessionid共享问题---修改cookie的域名为父域名达到cookie共享,实现sessionid的共享。但子站的cookie信息也被共享了。

    cookie与session区别

    cookie在客户端存放,session在服务器端。

    cookie易泄漏,不安全,可以cookie欺诈

    session会在一定时间保留在服务器上,访问增多,增加量服务器资源消耗。

    单个cookie数据不能超过4K,一般最多保存20个。

    重要信息(登录信息等)保存在session,其他cookie

    token

    概念

    服务端生成的一个字符串,作为客户端请求到一个令牌。当第一次登录时,服务器生成一个一个token并返回给客户端。以后客户端只需带上token即可。无需用户名和密码。

    意义

    客户端频繁的请求,而服务器需要不断去数据库检验信息,并做出回应,带来了巨大的压力,使用token就可以减少数据库访问次数,服务器更健壮。

    实现方式

    使用设备号/设备mac地址作为token(推荐)

    缺点:客户端需要携带设备号等信息,服务端需要保存

    优点:客户端不需要重新登录。

    token超时时,服务器将客户端传递的token向数据库查询,赋值给变量token,重新计时。

    解决重复提交问题

    session与token并用,同一用户的多次请求,验证每次请求的token是否一致,不一致认为重复提交。

    使用sessionid作为token

    优点:方便,不用存储数据。

    缺点:session过期后,客户端需要重新登录。解决办法:过滤器拦截请求,获取token,每次请求重置有效期。

    相关文章

      网友评论

          本文标题:Cookie、session与token

          本文链接:https://www.haomeiwen.com/subject/lbwykqtx.html