问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Token Cookie和Session的区别

发布网友 发布时间:2022-04-07 11:27

我来回答

2个回答

懂视网 时间:2022-04-07 15:48

发展史

1、很久很久以前,Web 基本上就是文档的浏览而已, 既然是浏览,作为服务器, 不需要记录谁在某一段时间里都浏览了什么文档,每次请求都是一个新的HTTP协议, 就是请求加响应, 尤其是我不用记住是谁刚刚发了HTTP请求, 每个请求对我来说都是全新的。这段时间很嗨皮。

2、但是随着交互式Web应用的兴起,像在线购物网站,需要登录的网站等等,马上就面临一个问题,那就是要管理会话,必须记住哪些人登录系统, 哪些人往自己的购物车中放商品, 也就是说我必须把每个人区分开,这就是一个不小的挑战,因为HTTP请求是无状态的,所以想出的办法就是给大家发一个会话标识(session id), 说白了就是一个随机的字串,每个人收到的都不一样, 每次大家向我发起HTTP请求的时候,把这个字符串给一并捎过来, 这样我就能区分开谁是谁了

3、这样大家很嗨皮了,可是服务器就不嗨皮了,每个人只需要保存自己的session id,而服务器要保存所有人的session id !如果访问服务器多了, 就得有成千上万,甚至几十万个。

这对服务器说是一个巨大的开销 , 严重的限制了服务器扩展能力, 比如说我用两个机器组成了一个集群, 小F通过机器A登录了系统, 那session id会保存在机器A上, 假设小F的下一次请求被转发到机器B怎么办?机器B可没有小F的 session id啊。

有时候会采用一点小伎俩: session sticky , 就是让小F的请求一直粘连在机器A上, 但是这也不管用, 要是机器A挂掉了, 还得转到机器B去。

那只好做session 的复制了, 把session id 在两个机器之间搬来搬去, 快累死了。

1565603049(1).png

后来有个叫Memcached的支了招:把session id 集中存储到一个地方, 所有的机器都来访问这个地方的数据, 这样一来,就不用复制了, 但是增加了单点失败的可能性, 要是那个负责session 的机器挂了, 所有人都得重新登录一遍, 估计得被人骂死。

1565603058(1).png

也尝试把这个单点的机器也搞出集群,增加可靠性, 但不管如何, 这小小的session 对我来说是一个沉重的负担。

4、于是有人就一直在思考, 我为什么要保存这可恶的session呢, 只让每个客户端去保存该多好?

可是如果不保存这些session id , 怎么验证客户端发给我的session id 的确是我生成的呢? 如果不去验证,我们都不知道他们是不是合法登录的用户, 那些不怀好意的家伙们就可以伪造session id , 为所欲为了。

嗯,对了,关键点就是验证 !

比如说, 小F已经登录了系统, 我给他发一个令牌(token), 里边包含了小F的 user id, 下一次小F 再次通过Http 请求访问我的时候, 把这个token 通过Http header 带过来不就可以了。

不过这和session id没有本质区别啊, 任何人都可以可以伪造, 所以我得想点儿办法, 让别人伪造不了。

那就对数据做一个签名吧, 比如说我用HMAC-SHA256 算法,加上一个只有我才知道的密钥, 对数据做一个签名, 把这个签名和数据一起作为token , 由于密钥别人不知道, 就无法伪造token了。

1565603067(1).png

热心网友 时间:2022-04-07 12:56

token就是令牌,比如你授权(登录)一个程序时,他就是个依据,判断你是否已经授权该软件;cookie就是写在客户端的一个txt文件,里面包括你登录信息之类的,这样你下次在登录某个网站,就会自动调用cookie自动登录用户名;session和cookie差不多,只是session是写在服务器端的文件,也需要在客户端写入cookie文件,但是文件里是你的浏览器编号。。。。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...赵高指鹿为马、燕昭王以千金买千里骨马、田忌赛马的故事!_百度... 什么是草花? 草花是怎么用的? Rio和锐澳是一家吗 锐澳公司介绍 暧昧期间出去吃饭应该谁买单啊? 一般女方出走几天男方能起诉离婚 女生戴什么水晶手链好1992年出生的 送女生手链时怎么说才浪漫(蓝水晶),就比如像钻石是女人最好的朋友之类... 新民晚报杯足球赛市级总赛事组委会电话 广西男子不相信儿子高原反应病危吗? 骑行疑高反病危后来咋样了? 地铁口"蹭网"农民工走红背后有多心酸? 23岁重庆小伙不顾一切非要娶跟妈妈同龄46岁大妈回家,后来怎样了? 肯德基宅急送加强操作规范性 悦动圈是什么意思 银行对于担保可以选择性起诉吗?对于不予起诉的担保人是否是放弃了权力 未起诉担保人、只起诉借款人、判决后还可以追诉担保人吗? B1蓝调和那个yami是同一款车吗? 债权人可以先起诉债务人而暂不起诉连带责任保证人吗 贺兰县骑行一般在什么地方会合? 债权人可否只起诉担保人,不起诉债务人 焦作有去骑行兰州到敦煌的人吗7月份又去骑行兰州到敦煌的骑友吗_百度问一问 23岁重庆男子不顾反对,娶了年龄大两轮的46岁大妈,后来怎么样了? 法院不起诉担保人是不是就是把钱给还上了? 共享单车的摩拜30天免费骑行怎么获得,哪里可以领取,怎么用,有微信群吗? 起诉借款人担保人不起诉可以吗? 樊登的创业故事是怎样的? 怎么找光阳踏板摩托车的微信群呢 可以先起诉借款人,不起诉担保人吗? 在金属漆上,银粉片漂浮形成斑点,该怎么补救? 中草药密陀增龙骨炉甘石轻粉冰片凡士林治什么病 暖气片保养的五个步骤是什么? 18岁英文写 18岁英文怎么说 企业职工养老保险退休后能拿多少钱 十八岁英语怎么写翻译 公司交的社保以后退休能领多少? 18岁 英语怎么写.? 女孩为什么会害羞? 他18岁英语怎么说 女生为什么生气 现在厂里交的养老保险退休以后能拿多少钱一个月呢 我今年18岁了用英语怎么说 工厂交五险每个月交1200,个人每个月交368,交十五年退休一个月能领多少钱? 为什么女生那么会花钱 女生为什么总是想要 工厂工人退休一月三千退休金,算什么水平? 淘宝没发货就申请退款会不会产生退款率 我18岁的英语 要5种以上的写法