图片讲解:
你可以把会话想象成图书馆的身份证。每次你去图书馆的时候,你都要给他们看你的身份证,你的身份证是那个图书馆签发的。
简单类比解释
想象一下,你在一家银行,试图从你的账户中取出一些钱。但是天很黑;银行一片漆黑,没有灯光。你被另外20个人包围着。他们看起来都一样。每个人的声音都是一样的。每个人都是潜在的坏人。换句话说,HTTP是无状态的。
这家银行是一种有趣的银行类型——为了便于讨论,以下是事情的运作方式:
你跟你的出纳员说,要求取钱,然后
你必须在沙发上等一会儿,20分钟后
你从出纳员那里取钱。
但是出纳员如何把你和其他人区分开来呢?
记住,出纳员看不见你,也认不出你,因为灯都灭了。
如果你的出纳员把你的1万美元提现给了别人——一个错误的人怎么办?让柜员认出你是取款的人是至关重要的,这样你就能拿到你想要的钱(或资源)。
解决方案:
当你第一次出现在出纳员面前时,他或她会秘密地告诉你一些事情:
“当你和我说话的时候,”出纳员说,“你应该首先表明自己是GNASHEU329,这样我就知道是你了。”
没有人知道这个秘密密码。
我提取现金的例子:
所以我决定去银行休息20分钟然后我去柜员那里说"我想取我的提款"
柜员问我:“你是谁??!”
“是我,乔治·班克斯先生!”
“证明!”
然后我告诉他们我的密码:GNASHEU329
“当然可以,班克斯先生!”
这基本上就是会话的工作方式。它可以让一个人在数百万人的海洋中被唯一地识别出来。每次和出纳员打交道时,你都需要说明自己的身份。
Sessions和cookie的区别
会话:在上面的例子中,您可以将会话看作临时密码。一旦银行(即服务器)看到密码-他们将能够识别你是谁,你想要什么等等。
Cookie:你可以把Cookie简单地想象成一张纸~~身份证~~上面印着信息。每次你去银行的时候,你都要出示你在那个发卡行的身份证。
你可以在那张卡上存储任何东西,比如:
姓名/年龄/性别/婚姻状况
密码
银行可以把信息写到你的身份证上,你也可以。但这可能很危险:
下面是我的ID card / cookie:
name: Ben Koshy
sex: male
bank balance: $1.99.
这糟透了。但如果我想偷偷摸摸,我可以编辑我的身份证:
bank balance: $1 billion bucks.
万岁!我可以凭空印更多的钱,比耶伦和鲍威尔加起来还多,然后用来买快克可卡因等。
这带来了安全风险:正是因为这个原因,服务器“加密”了cookie上的信息,所以如果你篡改了它,银行就会知道——他们可以在你的身份证上写各种信息,下次你试图来银行时把你锁在外面。杰罗姆·鲍威尔试图改变银行余额,而且非常狡猾,这是银行对他的身份证所做的:
Name: Jerome Powell
Status: ID Card tampered - changed bank balance by fraudulent printing.
Trust: Do not trust.
Judgment: Escort from building.
Outcome: guilty of theft / fraud.
以上不是严格意义上的,其术语完全准确,大意是用类比来解释概念。