cookie,sessionstorage,localstorage详解及登录判断

一.先分别来了解一下 cookie,session,sessionstorage,localstorage分别是什么

1.cookie: 在客户端(即浏览器)中保存。某些网站为了辨别用户身份,进行会话跟踪而存储在本地终端上的数据,通常经过加密。cookie数据始终在同源的http请求中携带(即使不需要),即cookie在浏览器和服务器间来回传递;cookie数据还有路径(path)的概念,可以限制cookie只属于某个路径下。存储大小限制也不同,cookie数据不能超过4k,同时因为每次http请求都会携带cookie,所以cookie只适合保存很小的数据,如会话标识。一般应用最典型的案列就是判断注册用户是否已经登过该网站。Cookie的maxAge决定着Cookie的有效期,单位为秒(Second)。Cookie中通过getMaxAge()方法与setMaxAge(int maxAge)方法来读写maxAge属性。如果maxAge属性为正数,则表示该Cookie会在maxAge秒之后自动失效。浏览器会将maxAge为正数的Cookie持久化,即写到对应的Cookie文件中。无论客户关闭了浏览器还是电脑,只要还在maxAge秒之前,登录网站时该Cookie仍然有效。cookie也是在所有同源窗口中都是共享的。

2.Session:保存在服务器,对客户端是透明的,它的正常运行仍然需要客户端浏览器的支持。这是因为Session需要使用Cookie作为识别标志。HTTP协议是无状态的,Session不能依据HTTP连接来判断是否为同一客户,因此服务器向客户端浏览器发送一个名为JSESSIONID的Cookie,它的值为该Session的id。Session依据该Cookie来识别是否为同一用户。

3.localStorage在客户端(即浏览器)中保存,不参与和服务器的通信,没有时间限制的数据存储,始终有效,用作持久数据 有存储大小的限制,但比cookie大得多,可以达到5M或更大。sessionStorage不在不同的浏览器窗口中共享,即使是同一个页面

4.sessionStorage 在客户端(即浏览器)中保存,不参与和服务器的通信,针对一个会话的数据存储,当用户关闭浏览器窗口后,数据会被删除,这里需要注意的是 sessionStorage并不是储存session的地方,和判断用户是否登录的Session没有关系,有存储大小的限制,但比cookie大得多,可以达到5M或更大 。localStorage 在所有同源窗口中都是共享的。

二.登录判断

当用户首次与Web服务器建立连接的时候,服务器会给用户分发一个 SessionID作为标识。SessionID是一个由24个字符组成的随机字符串。用户每次提交页面,浏览器都会把这个SessionID包含在 HTTP头中提交给Web服务器,这样Web服务器就能区分当前请求页面的是哪一个客户端。这个SessionID就是保存在客户端的,属于客户端Session。 其实客户端Session默认是以cookie的形式来存储的,所以当用户禁用了cookie的话,服务器端就得不到SessionID。这时我们可以使用url的方式来存储客户端Session。也就是将SessionID直接写在了url中,当然这种方法不常用。

猜你喜欢

转载自blog.csdn.net/qq_41635167/article/details/82834975