0

我正在开发一个基于 Rails REST 的网站,并且正在为控制器编写功能测试。作为一个基于 REST 的应用程序,我使用了几个 HTTP 动词GET、、、、POST等。PUTDELETE

我注意到我对匿名用户的 401 和 302 HTTP 响应代码的应用程序不一致。有时,当他们请求需要身份验证的资源时,我会返回 401 Unauthorized。其他时候,我返回 302 并将它们重定向到登录页面。

我应该在这里遵循标准吗?什么时候应该使用 401?我什么时候应该重定向到登录页面?例如,

  • 应该GETs重定向吗?
  • 应该POSTs得到一个401
  • 对于不遵循 302 的 AJAX 请求,我该怎么办?

或者也许这只是意见问题,我需要自己选择和执行的约定。

4

2 回答 2

4

当我阅读RFC时,请求需要身份验证的资源的未经身份验证的用户应该始终收到一个401 Unauthorized. 来自 RFC:

302 Found: 请求的资源临时驻留在不同的 URI 下。

401 Unauthorized: 请求需要用户认证。

显然,302并没有正确描述您的情况,但401确实如此。

于 2014-04-08T18:06:37.537 回答
1

我不知道搜索引擎是否会索引 401 页面。

理想情况下,对于未经身份验证的用户的受限页面:401 状态代码并显示登录表单。

对于仍然不允许的经过身份验证的用户:403 和“未授权”页面。

对于登录页面:200 OK 并显示登录表单。

于 2021-04-12T20:35:38.923 回答