session、cookie、token的区别与联系

先看一下 一次http请求和响应的过程:

 

1. 域名解析 
2. 发起TCP的3次握手 
3. 建立TCP连接后发起http请求 
4. 服务器端响应http请求,浏览器得到html代码 
5. 浏览器解析html代码,并请求html代码中的资源 
6. 浏览器对页面进行渲染呈现给用户

首先,客户端会发送一个http请求到服务器端。
服务器端接受客户端请求后,建立一个session,并发送一个http响应到客户端,这个响应头,其中就包含Set-Cookie头部。该头部包含了sessionId。Set-Cookie格式如下,
Set-Cookie: value[; expires=date][; domain=domain][; path=path][; secure]
在客户端发起的第二次请求,假如服务器给了set-Cookie,浏览器会自动在请求头中添加cookie
服务器接收请求,分解cookie,验证信息,核对成功后返回response给客户端

 

session、cookie和token值的区别:
(1)由于http是无状态的,服务端记录用户的状态时,需要用session识别用户,session是服务端保存的一个数据结构,跟踪用户状态;
服务器就要给每个客户端分配不同的“身份标识”,然后客户端每次向服务器发请求的时候,都带上这个“身份标识”,
服务器就知道这个请求来自于谁了。至于客户端怎么保存这个“身份标识”,可以有很多种方式,对于浏览器客户端,大家都默认采用 cookie 的方式。

(2)cookie是客户端保存用户信息一种机制,用来记录用户的一些信息,为了防止被篡改,加了一些限制,数量有限;
(3)服务器返回给客户端的一个token值,客户端存储token值,并在每次请求时附送上token值,服务端验证token值并返回数据,安全机制;

你可能感兴趣的:(Django,web)