cookie 和 session的基本介绍、使用及区别

cookie 和 session的区别

1)存在的位置:cookie 存在于客户端session 存在于服务器端,一个session域对象为一个用户浏览器服务

2)安全性:(https证书)cookie是以明文的方式存放在客户端的,安全性较低,可以通过一个加密算法进行加密后存放session存放于服务器中,所以安全性较好

3)网络传输量:cookie会传递消息给服务器session本身存放于服务器,但是通过cookie传递id,会有少量的传送流量

大小:cookie 保存的数据不能超过4K,很多浏览器都限制一个站点最多保存50个cookiesession 保存数据理论上没有任何限制

客户端创建

Cookie需要依赖服务器环境,所以应先搭建服务器环境。

创建cookie的语法:

document.cookie = "名称=值";

获取cookie的语法:

document.cookie;

Cookie的常用属性

过期时间:expires

没有设置expires属性,那么表示该cookie的有效期为会话,会话指浏览器打开到关闭。

设置了expires属性,那么表示该cookie的有效期为一个具体的时间,过期cookie文件删除。

示例:

var d = new Date();
d.setDate( d.getDate()+1 );
document.cookie = "username=zhangsan; expires="+d.toUTCString();     

解读:

创建了一个名称叫做username的cookie,它所存储的内容为zhangsan,它的过期时间是创建这个cookie时的1天后。 备注:

通过修改相同命名的cookie的值或过期时间,可以实现该cookie的修改和删除。

路径:path

cookie在读取时,是存在访问权限的,即只能够访问path路径下的cookie

例如,在网站根目录创建的cookie,网站任何位置都能够访问到这个cookie

在 /a/ 目录下创建的cookie,只能在 /a/ 目录下访问这个cookie。

示例:

document.cookie = "username=zhangsan; path=/";

解读:

创建了一个名称叫做username的cookie,它所存储的内容为zhangsan,该cookie在当前网站下任何位置都能读写。

备注:

path和domain属性都是设置该cookie的归属,即cookie作用域,因同源策略的限制,只能够获取同源同作用域下的cookie。

使用Cookie时需要注意

1.有些浏览器在使用中文时,会出现乱码。

在设置cookie时,通过encodeURIComponent 编码,在获取cookie时,通过decodeURIComponent 解码

2.cookie 文件存放在客户端

cookie 即可以用客户端 javascript 读写,也可以用服务器端 php、jsp等读写。

3.每个网站只能访问自己网站的cookie

即百度创建的cookie,新浪是不能够访问的。

4.每个浏览器只能访问自己浏览器的cookie
  • cookie 的内容是纯文本,即只能保存字符串数据。

  • cookie 依赖于www服务 ,即设置和获取cookie时,要用 http 访问网页。火狐除外。

浏览器Cookie数量及大小限制

浏览器允许每个域名所包含的cookie数

Microsoft指出InternetExplorer8增加cookie限制为每个域名50个,但实际上IE6就已经最多允许每个域名50个cookie。

Firefox每个域名cookie限制为50个。firefox 3.6可以存150个cookie。

Opera每个域名cookie限制为30个。

Safari / WebKit没有cookie限制。但是如果cookie很多,则会使header大小超过服务器的处理的限制,会导致错误发生。

cookie的缺点

cookie的缺点主要集中于安全性和隐私保护

  1. cookie可能被禁用

  1. cookie不能跨浏览器

  1. cookie可能被删除

  1. cookie安全性不够高

  1. 在浏览器向服务器发送请求时 cookie会随着请求(请求可以携带一定的数据)一同发送给服务器, 会影响请求和响应的速率

  1. cookie 存储大小之后 4k , cookie的存储条数 一般为50条

服务端创建

cookie的使用

  • 通过配置cookie-parser中间件,可以将cookie解析为一个对象,并且添加为req的cookies属性,使用步骤:

1)下载安装

npm i cookie-rser --save

2)引入

var cookieParser = require("cookie-parser");

3)设置为中间件

app.use(cookieParser());

4)创建Cookie

res.cookie("username","sunwukong" , {maxAge:15000});
//设置一个有效期为1天的cookie
res.cookie("username","sunwukong" , {maxAge:1000*60*60*24});

  5)删除Cookie

//可以通过通过使用一个立即失效的cookie来替换cookie的形式来删除cookie
res.cookie("username","11",{maxAge:0});
//用来删除一个cookie
res.clearCookie(“username”)用来删除一个指定cookie

session

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

session的使用

1)下载安装

npm i express-session --save

2)引入模块

var session = require("express-session");

3)设置为中间件

app.use(session({
  name: 'id22',   //设置cookie的name,默认值是:connect.sid
  secret: 'atguigu', //参与加密的字符串(又称签名)
  saveUninitialized: false, //是否为每次请求都设置一个cookie用来存储session的id
  resave: true ,//是否在每次请求时重新保存session
}));
  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值