如果浏览器Cookie禁用,如何标识用户?

用户68886090


我们先要清楚一点,我们访问网站用的协议是HTTP协议,而HTTP协议本身就是无状态的协议。什么是无状态呢?通俗说就是同一个访客向同一站点发出了多个请求,站点服务器默认情况下无法判断这些请求是出自同一个访客的。那就会带来一些问题了,比如用户登录,服务器如何知道用户是否登录了呢?所以必须要对会话进行管理,要保证服务器能辨别用户。

在Web中,用户的标识与状态管理我们称之为“会话管理”,会话管理是保持用户与服务器之间的互动过程。

在Web中的会话管理技术主要有两种:

  • 客户端会话:Cookie

  • 服务端会话:Session

Cookie是存储在客户端(浏览器)的,Session是存储在服务器内存、文件、数据库等中的,而Session默认是基于Cookie技术的。

Session之所以能正常使用是因为Session有一个全局唯一的标识符,通过这个标识符服务器才能找到对应的Session进行操作。这个标识符就是SessionID,当浏览器第一次请求服务器时,服务器生成了Session并将SessionID存储在客户端Cookie中,以后用户发出请求时都会把这个Cookie附加到请求头信息中一起传递给服务器,服务器获取到了这个SessionID就能找到对应的Session了。

所以说,如果浏览器禁用了Cookie,那此时SessionID就无法种植与传递,会导致用户每发出一个请求都被当成是新用户。这种情况下服务器端该如何标识用户呢?

其实很简单,服务器端只要将SessionID通过其它技术传递到客户端,客户端后续请求时继续把SessionID作为请求参数传递给服务器端解析即可。

举例说明一下,假设客户端禁用了Cookie,此时执行登录操作,登录成功后服务器端只需要在重定向的URL后面附加一个GET参数(参数值就是SessionID),然后所有的站内链接都把这个GET参数带上,这样服务器通过获取GET参数就能得到SessionID,自然也就找到了对应的Session,以此来实现用户标识。

以上就是我的观点,对于这个问题大家是怎么看待的呢?欢迎在下方评论区交流 ~ 我是科技领域创作者,十年互联网从业经验,欢迎关注我了解更多科技知识!


分享到:


相關文章: