关于浏览器内置的认证窗口

通过浏览器内置的认证窗口进行认证并不神奇,其实只要服务器端发送一个状态为401的响应头,浏览器就会弹出认证窗口,带用户输入用户名,密码点击确定后,将用户名密码以 base64_encode(username:password) 的方式放在http header里再次请求,发送给服务器;下面是第一次请求的响应头:
HTTP/1.1 401 Unauthorized
Transfer-Encoding: chunked
Status: 401
X-Powered-By: PHP/5.2.0
WWW-Authenticate: Basic realm="My Realm"
Content-type: text/html
Date: Sat, 26 Jul 2008 16:49:27 GMT
Server: LightTPD/1.4.19 (Win32)

下面是第二次的请求头:
GET /http_auth.php HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/x-silverlight, */*
Accept-Language: zh-cn
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; WPS)
Host: ljj.cn
Connection: Keep-Alive
Authorization: Basic bW1tOm5ubg==

关键就在红字部分,其中 bW1tOm5ubg== 就是我的用户名和密码,有兴趣的话可以用base64_decode() 解开看看,就像处理进程cookie那样,浏览器会记住用户名密码,每次请求该页都带上该header,知道浏览器关闭。

留下评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据