使用PHP身份验证(HTTP 401标头)
而不是使用普通表单提交身份验证有什么好处?
从安全角度来看,基于表单和HTTP基本访问身份验证都使用纯文本来发送身份验证数据.(当然,HTTP Basic Auth另外使用Base64,但这并不顺便.)
虽然HTTP Basic Auth会在每个请求上发送身份验证数据,但基于表单的身份验证仅在发送表单时发送身份验证数据(请记住:都是纯文本格式).通常会话用于在使用基于表单的身份验证时维护状态.
因此,如果您想使用其中一种,请务必使用HTTPS加密您的连接,以防止嗅探和中间人攻击.当您选择基于表单和会话的变体时,请务必保护会话处理,以防止或至少检测会话欺诈,如会话劫持和会话固定.
最后一个变体是HTTP摘要访问身份验证.这与Basic之间的主要区别在于,Digest是一种质询 - 响应身份验证,而客户端必须在每个请求上完成挑战,而响应只是一个MD5哈希.因此,不发送纯文本的身份验证数据.
您的问题有点模糊,但一般的答案是使用此方法为您提供了一个更加"RESTful"的实现,遵循HTTP已经擅长的.在这种情况下,抛出401是其他Web服务器,Web代理和Web浏览器知道如何处理的东西.如果您只是吐出一个HTML表单,它只能由最终用户操作,而使用HTTP状态代码允许机器交互.
我建议您查看http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol
以了解HTTP的真正含义.我认为这应该使所有这一切变得更有意义.