美文网首页
Cookie / Session

Cookie / Session

作者: 小凡凡520 | 来源:发表于2018-09-25 22:51 被阅读4次

也协作Cookies、通常用于web端记录用户身份。

工作流程
1、客户端发送一个http请求到服务器端
    Cookie由服务器端生成(定义)并记录保存
2、服务器端发送一个http响应到客户端,其中包含Set-Cookie头部
    客户端保存Cookie
3、客户端发送一个http请求到服务器端,其中包含Cookie头部
4、服务器端发送一个http响应到客户端
    确认用户身份(权限)以返回不同的资源
1552225-805aaee912e25b92.png
用途

Cookie在一定程度上解决了http无状态的缺陷。

特点
  • 不可跨域
    域名www.google.com颁发的Cookie不会被提交到域名www.baidu.com去。一二级域名可设置是否互通。
  • Cookie的有效期
    有效期可设置。负数为临时Cookie、0为失效。
  • 中文编码
    中文与英文字符不同,中文属于Unicode字符,在内存中占4个字符,而英文属于ASCII字符,内存中只占2个字节。Cookie中使用Unicode字符时需要对Unicode字符进行编码,否则会乱码。
缺陷

不利于隐私的保护

查看Cookie

控制台输入javascript:alert (document. Cookie)即可。

Session

Session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上。

客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。这就是Session。客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了。
  • Session的有效期
    由于会有越来越多的用户访问服务器,因此Session也会越来越多。为防止内存溢出,服务器会把长时间内没有活跃的Session从内存删除。这个时间就是Session的超时时间。如果超过了超时时间没访问过服务器,Session就自动失效了。

  • Session与Cookie

    1、虽然Session保存在服务器,对客户端是透明的,它的正常运行仍然需要客户端浏览器的支持。这是因为Session需要使用Cookie作为识别标志。HTTP协议是无状态的,Session不能依据HTTP连接来判断是否为同一客户,因此服务器向客户端浏览器发送一个名为JSESSIONID的Cookie,它的值为该Session的id(也就是HttpSession.getId()的返回值)。Session依据该Cookie来识别是否为同一用户。
    2、Cookie和Session的方案虽然分别属于客户端和服务端,但是服务端的session的实现对客户端的Cookie有依赖关系的,上面我讲到服务端执行session机制时候会生成session的id值,这个id值会发送给客户端,客户端每次请求都会把这个id值放到http请求的头部发送给服务端,而这个id值在客户端会保存下来,保存的容器就是Cookie,因此当我们完全禁掉浏览器的Cookie的时候,服务端的session也会不能正常使用。

相关文章

网友评论

      本文标题:Cookie / Session

      本文链接:https://www.haomeiwen.com/subject/vreroftx.html