我已经阅读了这个similar question,但它并不能让我满意。
我有两个用例。
对于这两种情况,应该返回哪个错误代码?我猜第一个是401,第二个是403。但是对于401,响应中必须包含WWW-Authenticate标头。我不想使用基本的HTTP身份验证,而是选择更传统的基于表单的方法。 (即,用户从Login.aspx或其他任何方式提交表单)。
我应该使用哪一个?
答案 0 :(得分:2)
对于第一种情况,您应该使用401 Unauthorized:
请求需要用户身份验证。响应必须包含WWW-Authenticate头字段(第14.47节),其中包含适用于所请求资源的质询。
对于第二种情况,您应该使用403 Forbidden:
服务器理解请求,但拒绝履行请求。授权无效,请求不应重复。
编辑:似乎我没有RTFQ - 我的不好。
如果您不想使用HTTP身份验证,那么对于案例#1,您可能只想返回200 OK:
...或307 Temporary Redirect指向登录屏幕 - 然后客户端307经过身份验证后返回原始网址。
对于案例#2 403仍然听起来是一个相当合理的回应 - 尽管第二个想法它可能是针对不应该提供给任何人的资源 - 因为404被建议作为有效的替代响应。
......所以也许情况#2也应该收到307或200响应。
答案 1 :(得分:1)
第二个403的第二个是我想的。