Cookie 和 Session分析

1.Cookie概念

  • 当用户使用浏览器首次访问一个支持Cookie的网站的时候,用户会提供包括用户名在内的我的信息发送到服务器;
  • 接着服务器端接收到客户端发送过来的http请求后,会发送一个http响应到客户端,其中包含Set-Cookie头部,自此,客户端再向服务器发送请求的时候,都会把相应的Cookie再次发回至服务器,服务器在接收到来自客户端浏览器的请求以后,就可以经过分析存放于请求头的Cookie获得客户端特有的信息,从而动态生成与该客户端相对应的内容;

Cookie工做图示
在客户端的第二次请求中包含的Cookie头部中,提供给了服务器端能够用来惟一标识客户端身份的信息。这时,服务器端也就能够判断客户端是否启用了cookieshtml

在客户端的第二次请求中包含的Cookie头部中,提供给了服务器端能够用来惟一标识客户端身份的信息。这时,服务器端也就能够判断客户端是否启用了cookies,查看浏览器中的Cookie信息跨域

2.为何要使用Cookie

  • Web应用程序是使用HTTP协议传输数据的,可是HTTP协议是无状态的协议,也就是说一旦数据交换完毕,客户端与服务器端的链接就会关闭,再次交换数据须要创建新的链接;
  • 这就意味着服务器没法从链接上跟踪会话,若是想要踪该会话,必须引入一种机制,Cookie就是这样的一种机制,它能够弥补HTTP协议无状态的不足,在Session出现以前基本上全部的网站都采用Cookie来跟踪会话;

3.Cookie管理机制

  • Cookie具备不可跨域名性,根据Cookie规范,浏览器访问一个域名时只会携带此域名的Cookie,而不会携带其余域名的Cookie;
  • Cookie在客户端是由浏览器来管理的,浏览器可以保证域名不跨域,从而保证用户的隐私安全,浏览器判断一个网站是否能操做另外一个网站Cookie的依据是域名;

4.Cookie的属性介绍

  • name:名称,Cookie一旦建立,名称便不可更改;
  • value:值,若是值为Unicode字符,须要为字符编码,若是值为二进制数据,则须要使用BASE64编码;
  • maxAge:Cookie失效的时间,单位秒,默认为-1。若是为正数则该Cookie在在超过maxAge秒以后失效。若是为负数则Cookie为临时Cookie,关闭浏览器即失效,浏览器也不会以任何形式保存该Cookie。若是为0,表示删除该Cookie。
  • secure:Cookie是否仅被使用安全协议(HTTPS,SSL等)传输;
  • path:Cookie的使用路径,若是设置为“/sessionWeb/”,则只有contextPath为“/sessionWeb”的程序能够访问该Cookie。若是设置为“/”,则本域名下contextPath均可以访问该Cookie。注意最后一个字符必须为“/”;
  • String domain:能够访问该Cookie的域名,若是设置为“.9xkd.com”,则全部以“9xkd.com”结尾的域名均可以访问该Cookie。注意第一个字符必须为“.”;

让浏览器禁用Cookie,这样当再次访问登陆过的网页时须要从新登陆,浏览器



5.Session概念

  • Session是服务器端使用的一种记录客户端状态的机制,使用上比Cookie简单一些,相应的也增长了服务器的存储压力;
  • Session技术则是服务端的解决方案,它是经过服务器来保持状态的,咱们一般都会把Session翻译成会话,所以咱们能够把客户端浏览器与服务器之间一系列交互的动做称为一个 Session;

6.使用Session

  • 第一步是建立Session,Session是在服务器端程序运行的过程当中建立的,不一样语言实现的应用程序有不一样建立Session的方法,在建立了Session的同时,服务器会为该Session生成惟一的Session id,而这个Session id在随后的请求中会被用来从新得到已经建立的Session;
  • 而后能够调用Session相关的方法往Session中增长内容,这些内容只会保存在服务器中,发到客户端的只有Session id;
  • 当客户端再次发送请求的时候,会将这个Session id带上,服务器接受到请求以后就会依据Session id找到相应的Session,从而再次使用,这样用户的状态也就得以保持了;

7.Cookie与Session的区别

  • cookie数据存放在客户的浏览器上,session数据存放在服务器上;
  • cookie没有Session安全,别人能够分析存放在本地的Cookie并进行Cookie欺骗,考虑到安全应当使用session;
  • session会在必定时间内保存在服务器上,当访问增多,会比较占用服务器的性能,考虑到减轻服务器性能方面,应当使用Cookie;
  • 服务端的session的实现对客户端的cookie有依赖关系的,sessionid是写在cookie中的;

参考:https://www.9xkd.com/user/plan-view.html?id=9813237300安全

相关文章
相关标签/搜索