cookie & session

都知道http是无状态的协议,那么要记录状态的话,就应当有辅助的东西来记录状态,cookie & session 的做用就在与此啦~web

cookie

what

什么是cookie?cookie实际上是存储到用户本地的少许数据,通常用于用户身份信息确认。redis

where

那么,咱们怎么看到cookie呢?数据库

审查如下掘金的页面,能够看到掘金存储的cookie,cookie通常存于用户内存&硬盘里面。浏览器

cookie的属性

接下来,咱们来看如下cookie的具体属性服务器

name // cookie 名 必须
value // cookie 值 必须
domain // cookie 所属域名 必须
path // cookie 所属path 必须
expires // cookie 过时时间 UTC时间格式
max-age // cookie 存活时间 以s为单位,0表示删除,小于0或没有表示会话cookie(关闭浏览器即失效)
size // cookie 大小
httponly // 只容许http请求携带cookie,document.cookie不支持
secure // 只容许https请求携带cookie,http不容许
复制代码

如何设置&读取

设置cookie,能够在浏览器端设置,也能够在服务器端设置。cookie

咱们先看下浏览器设置cookie,设置的时候只需对document.cookie对象进行赋值便可,设置完成以后,可在cookie中查看。session

固然了,读取cookie除了在审查元素中看以外,也能够经过document.cookie来读取(除了httponly的cookie)。dom

接着咱们看下服务器端分布式

服务器端设置cookie也很简单,设置的时候,在响应头中设Set-Cookie字段便可,读取的时候,cookie会在请求头中携带过去给服务端。spa

session

说完了cookie,咱们就来讲如下session。

使用

session一般是web服务用来保存状态的方法,它须要于cookie一块儿使用。

为何session要配合cookie使用呢?缘由很简单,由于没有cookie,用户就没有携带信息过来呀。

因此,第一次访问页面的时候,session就会认为该用户是一个新的用户,因而为用户生成一个session-id : session,而且将session-id在响应头的Set-Cookie中返回,在用户端保存来session-id。

以后的全部请求,用户就都会携带session-id到服务端,服务端在请求头的cookie中拿到session-id,则能够判断用户是谁,而后就能够根据用户的身份进行相应的操做了。

固然,session也有过时时间。例如过时时间为60分钟:没有收到用户数据开始的60分钟后,session就过时了。

存储

session的存储方式有两种:内存 & 数据库

若是服务器单机的话,session存内存是彻底没有问题的。

若是是分布式的话,那么session就不能存内存的,由于多台机器的session是不能互通的,因此可能会出现,有的接口有登陆,有的接口没登陆的状态。因此,分布式的话常常使用的数据库是redis。

写在最后

cookie与session仍是比较经常使用的,梳理完以后但愿能够更加理解。

相关文章
相关标签/搜索