Cookie与Session

2018-07-20  本文已影响83人  励志摆脱懒癌的少女酱

简介

  1. cookie机制
      在客户端保持状态的方案,浏览器通过扩展http协议自动发送给服务器:浏览器会检查所有存储的cookie,若某个cookie的作用范围>=将要请求的资源所在的位置,则将该cookie附在http请求头上发送给服务器。
    (1)会话cookie:保存在内存,生命周期是浏览器会话期间;
    (2)持久cookie:保存在硬盘,生命周期是设置的过期时间expires;
    浏览器筛选cookie规则:按照与当前请求url的域名或父域名下+当前路径或父路径下筛选—通过document.cookie返回与当前请求url可用的所有字符串;

    Cookie图解
  2. session机制
      在服务端保持状态的方案,需要借助cookie机制在客户端保存一个标识(sessionID);当程序为某个客户端请求创建一个session时,服务器首先检查这个客户端请求是否已包含了一个session id,若有,则按id检索出来使用;若没有,服务器会为客户端创建一个session并生成一个session id返回给客户端,客户端借助cookie保存;

区别

  1. 存储的位置
  1. 安全性
  1. 网络传输量
  1. 生命周期(以20min为例)

cookie的生成与应用

  1. 服务器生成cookie:因为http是无状态的协议,用它记录服务器和客户端之间的状态—res.setHeader('Set-Cookie', ['k1=v1;[可选参数]', 'k2=v2;[可选参数]']):Set-Cookie: k1=v1; Set-Cookie: k2=v2;/ res.setHeader('Set-Cookie', 'k1=v1;[可选参数]');
  1. 客户端:发送请求时http报文中携带:Cookie: key=value;key=value;
  2. 性能优化

每一个用户与服务器数据一一对应的实现

  1. 基于cookie保存sessionid实现;
  2. 基于url的查询字符+url重定向实现:服务器发现字符串不携带sessionid参数则回复一个302状态和Location报头,将url加上sessionid字段后返回给客户端;
上一篇 下一篇

猜你喜欢

热点阅读