cookie和session

按理说,http是无状态的 每次请求都该不记得我, 都该找我要密码
没有这样 就是因为 session+cookie

cookie是服务端给浏览器的信息(放在响应头里面), 浏览器存起来, 以后每次去请求都带上(放在请求头里面), 这个被传来传去做用户标识的信息 就是session id


Set-Cookie

客户端响应 设Set-Cookie头,浏览器就会存这个cookie键值对


默认寿命是 关闭浏览器结束
浏览器 下次请求都会带上之前收到的响应头上的 cookie键值对


max-age

设寿命max-age单位秒

HttpOnly

Set-Cookie 加上一个HttpOnly
禁止客户端document.cookie自己拿cookie
下面这样打印不出来


domain



只有 xxx.test.com 能拿到这个abc的值

session机制

当程序需要为某个客户端的请求创建一个session时,服务器首先检查这个客户端的请求里是否已包含了一个session标识(称为session id),
如果已包含则说明以前已经为此客户端创建过session,服务器就按照session id把这个session检索出来使用(检索不到,会新建一个),
如果客户端请求不包含session id,则为此客户端创建一个session并且生成一个与此session相关联的session id,
session id的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串,这个session id将被在本次响应中返回给客户端保存。

保存这个session id的方式可以采用cookie,这样在交互过程中浏览器可以自动的按照规则把这个标识发挥给服务器。一般这个cookie的名字都是类似于SEEESIONID

经常被使用的一种技术叫做URL重写,就是把session id直接附加在URL路径的后面, 因为客户端可能会禁用cookie。还有一种技术叫做表单隐藏字段。就是服务器会自动修改表单,添加一个隐藏字段,以便在表单提交时能够把session id传递回服务器。

https://juejin.im/entry/5766c29d6be3ff006a31b84e

cookie session比较

  1. cookie数据在客户端, session数据在服务端
    cookie数据往往会存了session id
  2. cookie 不怎么安全, 因为可以伪造, 不该信任它
  3. session 在服务端 , 为了减轻负担 该存cookie

你可能感兴趣的:(cookie和session)