认证授权
2017年8月24日
HTTP
的一个最大的特点就是它是无状态协议 —— 客户端发一次请求给服务器,走一个请求和响应的循环之后,服务器就立刻忘记可客户端,同一个客户端再次访问服务器的时候,服务器就不认识这个客户端了
客户端和服务器之间是不能保持一种“链接状态”的,所以说HTTP
是一个无状态协议
为了实现用户登录的一种状态,实现认证和授权,我们该怎么做呢?
Cookie
cookie
是客户端浏览器上的专属于某个域名的一个小文件,用于服务端确认客户端
特征
客户端:浏览器每次发出请求的时候都会携带着cookie
信息在HTTP
的头信息里给服务器
服务器端:cookie
一般都是在服务器端设置的,通过HTTP
响应的头部:Set-Cookie
返回给浏览器,浏览器拿到这些数据就可以保存到自己的cookie
文件中
缺点
- 每个域名最多只能有20条
cookie
,长度不能超过4KB - 安全性问题。如果
cookie
被人拦截了,那人转发就可以取得所有的会话权限 - 浪费带宽
- 不可以跨域调用
Session
session
的含义是“会话”(或者也叫对话,session
的本意是“一段时间”),
特征
每次有一个新的浏览器用户登录进来,服务器端都会创建一个新的session
,那么在这个session
之中,服务器就可以为这位特定用户(其实就是为特定的那个浏览器)保存任意信息了
认证
但是同一时刻,连接到服务器的浏览器可能成千上万,那么服务器是如何区分不同用户的浏览器的呢?
“使用cookie
”
具体来说,每个服务器端的 session 被创建的时候,都会有一个sessionId
被创建的时sessionId
都会自动的被发送到浏览器的cookie
中,这样,每个浏览器就跟自己在服务器上的session
有了绑定关系了