HTTP AUTH的过程:

(1)浏览器发送HTTP请求

(2)服务器发现配置了HTTP AUTH,于是检查request里面有没有"Authorization"的HTTP header
如果有,则判断Authorization里面的内容是否在用户列表里面,Authorization header的典型数据为"Authorization: Basic jdhaHY0=",其中Basic表示基础认证, jdhaHY0=是base64编码的"user:passwd"字符串。如果没有,或者用户密码不对,则返回HTTP code 401页面给客户端。

(3)浏览器在收到401页面之后,应该弹出一个对话框让用户输入帐号密码;并在用户点确认的时候再次发出请求,这次请求里面将带上Authorization header

一次典型的访问场景是:
浏览器发送HTTP请求(没有Authorization header)
服务器端返回401页面
浏览器弹出认证对话框
用户输入帐号密码,并点确认
浏览器再次发出HTTP请求(带着Authorization header)
服务器端认证通过,并返回页面
浏览器显示页面

优缺点:

使用HTTP AUTH的场景不会用cookie,也就是说每次都会送帐号密码信息过去。然后我们都知道base64编码基本上等于明文。这削弱了安全。

由于种种缺点,HTTP AUTH现在用的并不多。不过在路由器等场合还是有应用的,原因是HTTP AUTH最简单,使用起来几乎是零成本。