基于http协议 的cookie 和session

会话:这里指web系统的会话,指用户登录以后, 在退出以前都是一个会话, 退出条件:注销登录或超出系统设置的会话时间.

Http 是一个无状态协议, 就是说这一次请求和上一次请求是没有任何关系的,互不认识的,没有关联的。这种无状态的的好处是快速。坏处是需要进行用户状态保持的场景时[比如,登陆状态下进行页面跳转,或者用户信息多页面共享等场景],必须使用一些方式或者手段比如: session 和 cookie

cookie
1.作用:客户端本地保存用户信息, 之后每次发起http请求时,cookie就会自动携带该信息, 进行用户认证, 保证用户在线状态.
使用场景:记住密码/多少天免登录 等
cookie是区分域名的,不同的域名,保存在不同的文件里.
基于http协议 的cookie 和session
2. cookie存储在客户端上的上(其实可以分两种:

(1),持久性cookie,设置了cookie的时间,以文件方式存在硬盘上,
(2),会话cookie,没有设置cookie时间,cookie的生命周期也就是关闭浏览器前就消失,一般不会保存在硬盘,而是保存在内存上)

session:
而将用户敏感信息放到本地浏览器中,能解决一定的问题,但是又引进了新的安全问题,一旦cookie丢失,用户信息泄露,也很容易造成跨站攻击,
所以有了另一种解决方法,将用户敏感信息保存至服务器,而服务器本身采用md5算法或相关算法生成唯一值(session id),将该值保存值客户端浏览器,
客户端的后续请求,浏览器都会自动携带该id,进而再在服务器端认证,进而达到状态保持的效果.
基于http协议 的cookie 和session
cookie vs session
两者有什么区别呢?
Cookie以文本文件格式存储在浏览器中,而session存储在服务端
因为每次发起 Http 请求,都要携带有效Cookie信息,所以Cookie一般都有大小限制,以防止增加网络压力,一般不超过4k
可以轻松访问cookie值但是我们无法轻松访问会话值,因此session方案更安全

3. 本地禁止cookie
要使用session,需要使用cookie机制来保存session id的,那么万一在客户端cookie机制被禁掉了,那session貌似也就无法使用了?其实替代方法是有的

经常被使用的一种技术叫做URL重写,就是把session id直接附加在URL路径的后面。
还有一种技术叫做表单隐藏字段。就是服务器会自动修改表单,添加一个隐藏字段,以便在表单提交时能够把session id传递回服务器