当某个页面需要认证才能进行访问时,接到请求后服务器端会在响应头中发送一个 WWW-Authenticate 首部(用来标识认证安全域),语法为
WWW-Authenticate:Basic relam=quoted-string
客户端接收到后会弹出一个对话框,要求输入用户名和密码,用户输入的用户名和密码将会分别保存至 $_SERVER['PHP_AUTH_USER'] 和 $_SERVER['PHP_AUTH_PW'] 中,开发者可以设计程序验证用户输入的用户名和密码是否正确。
当用户输入用户名和密码并且点击确定后,请求头会发送一个 Authorization 首部,语法为 Authorization:Basic Base64(username:password)
在 IE 下,输入错误超过3次,服务器端会在响应头中发送 401 状态码,提示需要授权(401 (Authorization Required)),在 Chrome 或 FireFox 下,只有用户选择取消输入时,才会发送 401 状态码,否则对话框会一直要求输入用户名和密码。
代码:
按 Ctrl+C 复制代码
按 Ctrl+C 复制代码
访问页面时,弹出认证窗口:
选择取消时:
输出正确的用户名和密码时:
参考:《PHP Cookbook,3rd》P244