我正在开发基于Rails REST的网站,并正在为控制器编写功能测试。作为基于REST的应用程序,我使用了几个HTTP动词,GET
,POST
,PUT
,DELETE
等。
我注意到我在申请匿名用户的401和302 HTTP响应代码时不一致。有时,当他们请求需要身份验证的资源时,我会返回401 Unauthorized。其他时候,我返回302并将它们重定向到登录页面。
我应该遵循标准吗?什么时候应该使用401?我什么时候应该重定向到登录页面?例如,
GETs
? POSTs
应该401
吗? 或许这只是意见问题,我需要自己选择和执行的约定。
答案 0 :(得分:4)
当我阅读RFC时,未经身份验证的用户请求需要身份验证的资源应始终收到401 Unauthorized
。来自RFC:
302 Found
:请求的资源暂时驻留在不同的URI下。
401 Unauthorized
:请求需要用户身份验证。
显然,302
无法正确描述您的情况,401
会这样做。
答案 1 :(得分:1)
我不知道搜索引擎是否会将 401 页面编入索引。
理想情况下,对于未经身份验证的用户的受限页面: 401 状态码并显示登录表单。
对于仍然不允许的已验证用户: 403 和“未授权”页面。
对于登录页面: 200 OK 并显示登录表单。