Cookie和Session的区别

98 阅读4分钟

一. Cookie是什么

        cookie就是一些数据信息,类型为“小型文本文件”,存储于电脑上的文本文件中。 通俗的来讲就是当一个用户通过 http访问到服务器时,服务器会将一些 Key/Value键值对返回给客户端浏览器,并给这些数据加上一些限制条件,在条件符合时这个用户下次访问这个服务器时,数据通过请求头又被完整地给带回服务器,服务器根据这些信息来判断不同的用户。 也就是说, cookie是服务器传给客户端并保存在客户端的一段信息,这个 Cookie是有大小,数量限制的!!

二. Cookie有什么用

       当我们打开一个网站时,如果这个网站我们曾经登录过,那么当我们再次打开网站时,发现就不需要再次登录了,而是直接进入了首页

1.jpg

三. Cookie 主要用于以下三个方面:

  • 会话状态管理(如用户登录状态、购物车、游戏分数或其它需要记录的信息)
  • 个性化设置(如用户自定义设置、主题等)
  • 浏览器行为跟踪(如跟踪分析用户行为等)

Cookie曾一度用于客户端数据的存储,因当时并没有其它合适的存储办法而作为唯一的存储手段,但现在随着现代浏览器开始支持各种各样的存储方式,Cookie渐渐被淘汰。由于服务器指定Cookie后,浏览器的每次请求都会携带Cookie数据,会带来额外的性能开销(尤其是在移动环境下)。新的浏览器API已经允许开发者直接将数据存储到本地,如使用 Web storage API (本地存储和会话存储)或 IndexedDB 。

四. Cookie的创建

当前 Cookie有两个版本,分别对应两种设置响应头:“Set-Cookie”和 “Set-Cookie2”。在Servlet中并不支持Set-Cookie2.

属性项属性项介绍
NAME=VALUE键值对,可以设置要保存的 Key/Value,注意这里的 NAME 不能和其他属性项的名字一样
Expires过期时间,在设置的某个时间点后该 Cookie 就会失效
Domain生成该 Cookie 的域名,如 domain="www.baidu.com"
Path该 Cookie 是在当前的哪个路径下生成的,如 path=/wp-admin/
Secure如果设置了这个属性,那么只会在 SSH 连接时才会回传该 Cookie

六.操作Cookie

前端语法:

设置:document.cookie='key=vlaue;expires=GMT时间;path=/';

key:键名

value:键值 获取的账号 密码...

expires:过期时间 需要是GMT时间toGMTString() / toUTCString()推荐使用

path:存在的路径

七. 什么是session

session在网络应用中称为“会话控制”,是服务器为了保存用户状态而创建的一个特殊的对象。简而言之,session就是一个对象,用于存储信息。

八. session的存储形式

session类似于一个Map,里面可以存放多个键值对,是以key-value进行存放的。key必须是一个字符串,value是一个对象。

九.session常用方法

  • resquest.getSession():得到请求游览器(客户端)对应的session。如果没有,那么就创建应该新的session。如果有那么就返回对应的session

  • setAttribute(String s, Object o):在session存放属性

  • getAttribute(String s):从session中得到s所对应的属性

  • removeAttribute(String s):从session中删除s对应的属性

  • getId():得到session所对应的id

  • invalidate():使session立即无效

  • setMaxInactiveInterval(int i):设置session最大的有效时间。

十.Session和Cookie的区别?

1、数据存储位置:cookie数据存放在客户的浏览器上,session数据放在服务器上。

2、安全性:cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session。

3、服务器性能:session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie。

4、数据大小:单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。

5、信息重要程度:可以考虑将登陆信息等重要信息存放为session,其他信息如果需要保留,可以放在cookie中。