Session 既然我们已经有了cookies,为什么还需要会话?
我是web应用程序的新手,我正在学习Cookie和会话,我了解HTTP是无状态协议,我们在客户端使用Cookie,在服务器端使用会话Session 既然我们已经有了cookies,为什么还需要会话?,session,url,cookies,Session,Url,Cookies,我是web应用程序的新手,我正在学习Cookie和会话,我了解HTTP是无状态协议,我们在客户端使用Cookie,在服务器端使用会话 当用户请求一个网页时,它会发送该网页可用的所有cookie 电脑上的浏览器 如果任何一个cookie与服务器端数据库匹配,则服务器 显示数据,否则发送带有会话iD的set cookie(发送可选) 创建会话并发送会话ID) a。如果服务器发送set cookie,则客户机将以所有相应的方式发送cookie 仅当域名与会话id匹配时,才请求会话id 客户端发送到的服
- cookie仅包含唯一的会话标识符(但本身没有有用的信息)
- 会话存储(服务器端)包含此会话的关联数据。这可能是a)非常大,b)对用户/浏览器隐藏,c)可信(因为用户不能仅在浏览器中修改)
- 该会话中可能存在并且可能存在敏感数据,例如用户的id,用于识别用户。如果您只是将用户的id存储在cookie中,用户就可以操纵它,并轻松地伪装成其他任何人。当然有一些方法可以缓解这种情况,但最简单的方法就是不允许用户使用cookie内容(因为它只是一个毫无意义的会话id)
- 它允许服务器管理会话状态;e、 g.如果用户怀疑有人以其他设备上的身份登录,他们可以使所有其他会话无效(“在任何地方注销我”功能)
- 您可能正在存储大量数据,并且在每次请求时在cookie中来回发送数据可能会变得相当浪费
- 您可能希望将购物篮之类的东西与用户的帐户相关联,而不仅仅是与用户的浏览器相关联,因此当他们登录到另一台设备时,他们的购物车会跟着他们
是的,也有一些非常好的情况,仅仅将信息存储在cookie中是很好而且更可取的,特别是因为这样可以更容易地将服务器扩展到服务器集群,而不必担心会话信息存储在何处。这取决于您存储的确切信息。这些是不同的概念:
- Cookie-浏览器会在每次请求时自动发送此消息
- Header—HTTP请求的一部分,浏览器仅在收到指示时才会在此处发送数据
- 访问令牌-包含秘密,可能是JWT(并标识用户)或随机字符集
- 会话-绑定到用户+设备的令牌,用于验证用户。如果用户没有访问令牌,他们可以使用会话获取新令牌