让你正式认识cookie、session、token三者的作用
什么是Cookie
Cookie是一种在Web浏览器中存储数据的小文件。它由服务器发送给客户端,并在客户端的浏览器中进行存储。Cookie常用于在不同的HTTP请求之间传递数据,以便跟踪用户的会话信息、个性化设置和访问权限等。它可以通过设置过期时间来控制其生命期,并且只能在同一域名下进行访问。
Cookie的特点如下:
- 持久性:Cookie可以设置一个过期时间,过期时间之前浏览器会一直保留该Cookie。可以是会话Cookie,关闭浏览器后就会删除;也可以是持久Cookie,可以在一段时间内保留在用户设备上。
- 容量有限:每个域名下浏览器对Cookie的存储有限制,一般情况下每个域名只能设置几十个Cookie,总大小通常在几KB到几MB之间。
- 安全性较低:Cookie的内容会以明文的形式传输在网络上,容易被截获,所以不应该存储敏感信息。
- 遵循同源策略:浏览器遵循同源策略,一个网站的Cookie不会被其他网站访问到。
Cookie的应用场景有:
-
会话管理:服务器可以通过Cookie来区分不同用户的会话,保存用户的登录信息或其他会话相关的数据。
-
网络请求优化:使用Cookie来记录用户的选项或偏好,例如设置语言、主题、字体大小等,让用户下次访问时能够提供更符合其需求的内容。
-
广告定向投放:通过Cookie收集用户的浏览行为和偏好,以便向用户展示更加个性化和有针对性的广告。
-
记住用户状态:通过Cookie记住用户在网站的一些状态,例如购物车中的商品、上次的浏览记录等,提供更好的用户体验。
什么是Session
Session是一种在服务器端存储数据的机制。它是基于Cookie或者URL重写的方式来实现的。在用户通过浏览器访问网站时,服务器会为每个用户创建一个唯一的会话,并为该会话分配一个唯一的标识符(Session ID)。Session ID会存在Cookie中或者通过URL参数传递给客户端的每个请求。服务器使用Session ID来查找并重建用户的会话状态,以便识别用户和跟踪其操作。
Session的特点包括:
- 唯一性:每个用户都会被分配一个唯一的Session ID,用于标识该用户的会话。
- 持久性:Session可以在一定时间内持久保存,可以通过设置Session的过期时间来控制。
- 可以存储多种类型的数据:Session可以存储用户的会话状态、用户信息等任意数据。
Session的应用场景包括:
-
用户登录状态的管理:Session可以用于保持用户的登录状态,当用户成功登录后,将用户的登录信息存储在Session中,在用户的后续请求中可以通过验证Session来判断用户是否已登录。
-
购物车功能:Session可以用于存储用户的购物车信息,将用户选购的商品存储在Session中,方便用户在不同页面之间访问购物车。
-
记住我功能:当用户选择“记住我”时,可以将用户的登录信息存储在Session中,下次用户访问时可以直接通过Session中的信息进行自动登录。
-
多页面数据共享:Session可以用于在不同页面之间共享数据,将共享的数据存储在Session中,在不同页面间共享使用。
-
防止重复提交:可以使用Session来标记用户的请求是否已处理,避免用户重复提交表单或者执行重复操作。
什么是Token
Token是一种用于身份验证和授权的令牌。它是服务器生成的一串字符串,用于标识特定的用户或实体。Token通常由服务器在用户身份验证成功后生成,并在每次请求中通过HTTP头或URL参数发送给客户端。客户端在后续的请求中携带Token来验证自己的身份。Token可以存储一些加密的用户信息,以及用于授权的权限或角色等。
Token的特点包括:
- 唯一性:每个实体有唯一的Token,不同实体有不同的Token。
- 不可伪造性:Token是通过特定的算法生成的,并且很难被篡改或伪造。
- 时效性:Token有一定的有效时间,在过期之后需要重新获取。
Token的应用场景包括:
-
认证与授权:在身份认证中,用户登录后会生成一个Token,之后的请求可以使用该Token来证明自己的身份并获取相应的授权。Token可以避免在每次请求中传输敏感信息,提高了安全性。
-
保密通信:Token可以用于加密通信,防止数据被窃取或篡改。
-
数据交换:Token可以作为数据传递的凭证,确保数据的真实性和完整性。
-
单点登录:在多个应用中共享用户身份认证信息,用户登录后只需要获取一次Token,在其他应用中直接使用Token进行认证。
cookie、session、token三者之间有什么联系和明显区别
Cookie、Session、Token 是用于在web开发中进行身份验证和用户状态管理的三种方式,它们之间有联系也有明显区别。
联系:
- 都是用于进行身份验证和用户状态管理的方式;
- 都可以通过在请求和响应中传递数据来实现持久化会话。
区别:
- Cookie:Cookie是存储在用户客户端浏览器中的数据,由服务器在响应中返回给浏览器,并且浏览器每次请求都会自动携带Cookie数据。服务器可以根据Cookie来识别用户身份和管理用户状态。Cookie通常存储在浏览器的文件中,有过期时间,可以被用户手动清除,或者被服务器端删除。
- Session:Session是服务器端的一种机制,用于在服务器上存储用户状态和数据。服务器会为每个来自浏览器的请求创建一个唯一的Session标识,该标识在相应的响应中返回给浏览器并通过Cookie进行存储。浏览器在下一次请求时通过Cookie携带Session标识,服务器通过该标识来识别用户身份和管理用户状态。Session数据存储在服务器的内存中,会在一定时间内保持有效。
- Token:Token是一种无状态的身份验证机制,它就是一个字符串。在用户登录成功后,服务器会生成一个Token,并将该Token返回给客户端。客户端在后续的请求中携带该Token进行身份验证。服务器通过验证Token的合法性和有效期来判断用户身份和管理用户状态。Token可以存储在客户端的本地存储或者内存中,不依赖于Cookie。
更多文章,请关注公众号“六便士IT”