前端开发那些事儿

Cookies与Session

2021-03-23  本文已影响0人  李霖弢

Cookie

服务器在 HTTP 响应中, 通过Set-Cookie命令浏览器存储一个cookie(通常不大于4KB)并为其配置属性

HTTP/1.0 200 OK
Content-type: text/html
Set-Cookie: yummy_cookie=choco;Expires=Wed, 21 Oct 2015 07:28:00 GMT; Secure; HttpOnly
Set-Cookie: tasty_cookie=strawberry; Secure; path=/blog

[page content]

此后浏览器每次对Cookie的Domain对应的域发起HTTP请求时,自动把这个Cookie携带到请求的Header中

GET /sample_page.html HTTP/1.1
Host: www.example.org
Cookie: yummy_cookie=choco; tasty_cookie=strawberry
cookie属性
document.cookie

document.cookie属性用于读写当前网页的 Cookie。

document.cookie = 'fontSize=14; '
  + 'expires=' + someDate.toGMTString() + '; '
  + 'path=/subdirectory; '
  + 'domain=*.example.com';

Session

Session是一种服务端的机制,服务器使用哈希表结构(key-value)来保存信息。通过客户端请求传入的key进行匹配,以识别客户端的身份。
Session通常借助Cookie或Storage将key存在浏览器端,通过redis将key-value对照关系存在服务器端

一个常见的校验方式
  1. 生成3个COOKIE,分别使用用户名,登录时间,用户名+登录时间DES加密后的密文
  2. 使用COOKIE与SESSION进行比对验证
  3. 使用JWT生成TOKEN,解密出被加密的部分进行验证。
JWT

将用户信息加密后直接传给前端作为token,前端每次请求带上该token,服务器端解密后直接获得用户信息。比起普通的Session认证,不依赖cookie和session,不受CSRF攻击,信息不用存储在服务器端(节省开销且利于分布式系统)。

上一篇 下一篇

猜你喜欢

热点阅读