假设未经身份验证的用户试图获取只有授权用户才能看到的页面:/profile/preferences
用 401 Unauthorized 连同登录页面的内容回复此问题是正常做法,还是将 302 Found 重定向到登录页面然后将用户发送回/profile/preferences 更好?
每种方法的优点和缺点是什么?您能否提供使用第一种方法的网站示例?
最佳答案
如果您谈论的是“登录页面”,那么您使用的是表单例份验证。只有在 HTTP 级别进行身份验证(例如,使用 basic-auth 或 digest-auth)时,才提供 401 服务才有意义,因为 401 响应必须包含一个 WWW-Authenticate:
header 浏览器响应的挑战。
此外,如果您正在执行表单例份验证,您几乎肯定不想要提供 301 服务——您的用户将永远无法通过您的登录屏幕。 :-) 301 用于永久移动。对于表单例份验证的重定向之类的东西,您应该使用 302。
关于http - 通过 401 Unauthorized 提供登录表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3736183/