cookie&&session

cookie

cookie是一种能让服务器在用户浏览器中存储数据的技术。服务器通过响应头中的Set-Cookie字段将cookie返回给客户端,

客户端浏览器在收到响应时,会把cookie存储起来,以后每次向这个域发送请求时,都会把这个cookie附加在请求头中,发送给服务器。

cookie是按照域分别存储的,从某个域获取的cookie也只会发给这个域。

协议名、域名(IP)、端口号,三者有一个不同,就算是不同的域。

session是一种基于cookie技术的服务器端存储技术,它可以为每一个网站的用户在服务器端创建一个存储对象,用于存储一些这个用户的信息。

cookie是存储在浏览器端的,session是存储在服务器端的。

浏览去操作cookie

document.cookie 既可以设置cookie,也可以去cookie;

给cookie添加过期时间

var now = new Date("2021-05-26 11:32");
document.cookie = "height=180;expires=" + now.toUTCString();  exporess字段设置过期时间

其他常用的配置

name字段为一个cookie的名称。

value字段为一个cookie的值。

domain字段为可以访问此cookie的域名。

非顶级域名,如二级域名或者三级域名,设置的cookie的domain只能为顶级域名或者二级域名或者三级域名本身,不能设置其他二级域名的cookie,否则cookie无法生成。

顶级域名只能设置domain为顶级域名,不能设置为二级域名或者三级域名,否则cookie无法生成。

二级域名能读取设置了domain为顶级域名或者自身的cookie,不能读取其他二级域名domain的cookie。所以要想cookie在多个二级域名中共享,需要设置domain为顶级域名,这样就可以在所有二级域名里面或者到这个cookie的值了。
顶级域名只能获取到domain设置为顶级域名的cookie,其他domain设置为二级域名的无法获取。

path字段为可以访问此cookie的页面路径。 比如domain是abc.com,path是/test,那么只有/test路径下的页面可以读取此cookie。

expires/Max-Age 字段为此cookie超时时间。若设置其值为一个时间,那么当到达此时间后,此cookie失效。不设置的话默认值是Session,意思是cookie会和session一起失效。当浏览器关闭(不是浏览器标签页,而是整个浏览器) 后,此cookie失效。

Size字段 此cookie大小。

http字段 cookie的httponly属性。若此属性为true,则只有在http请求头中会带有此cookie的信息,而不能通过document.cookie来访问此cookie。

secure 字段 设置是否只能通过https来传递此条cookie

cookie 模块

当用户登录成功之后,服务器会将cookie返回到浏览器中,浏览器会保存这个cookie,然后每次发送请求都会在请求头附带cookie,

然后可以在请求中使用req.headers.cookie 访问浏览器发送过来的cookie,就可以证明是否登录;

res.cookie() //将cookie返回到客户端,参数一cookie的键,参数二cookie的值,参数三cookie的options //一般参二cookie为随机的字符串,作为登录凭证;

常见的配置有

domain   //配置cookie相关的域名;

path   // 应用cookie使用的路径;

maxAge  //cookie的有效期,值为毫秒;

httpOnly  //表明cookie只能在服务器中进行修改,客户端不能修改。

secure   //只能通过https协议才能发送;

signed设置为true事表示这个cookie会被签名(签名:加密的一种);

获取请求中的cookie   req.headers.cookie  是个cookie字符串,  //express 自带的属性;

使用cookie.paese()可以将字符串转化成对象;方便操作

res.clearCookie("user");   //删除cookie

express脚手架内置的是cookie-parse中间件,与cookie模块在使用中需注意

cookie-parser  req.cookies  获取cookie对象;

express-session 模块

session模块是基于cookie技术再次开发的技术,将数据从客户端储存到服务端,它可以将为每个网站的用户创建一个储存对象,用于储存用户信息

功能相对于cookei更加方法快捷,但是存在cookei劫持的隐患;

需要配置session之后才能使用session;

app.use(session({
    //options
}))

常用的配置:

secret:"hollo word"   //session的密钥,session的值会对这个secret的值得到随机编码;

resave:true|false   //是否需要重新保存,当cookie值一样时,是否需要重新保存一份,通常设置为false;

saveUninitialized:false   // 是否要存储未初始化的cookie;

此时就可以使用session了


req.session.key="data"    //key为session对象的键值,访问data,data存放用户的信息;

req.session.key   //获取session相对想的key的值;

删除信息  delete req.session.key

md5 模块

加密模块   不可逆, 使用时请注意,一般用于密码;

md5(加密的数据)  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值