在没有WWW-Authenticate的情况下返回AJAX响应的HTTP 401状态

use*_*130 12 authentication ajax http www-authenticate http-response-codes

如果您希望传达用户未登录,即使登录机制是基于表单而不是基于HTTP(Basic,Digest等),也可以为AJAX调用的响应返回HTTP 401状态?

这里的答案表明应该使用401:https: //stackoverflow.com/a/6937030/2891365

这篇文章展示了一个使用401进行AJAX响应的人的实际例子:http://www.bennadel.com/blog/2228-some-thoughts-on-handling-401-unauthorized-errors-with-jquery.htm

但是,HTTP/1.1的RFC 2616明确指出需要特殊的头,这意味着它只能用于HTTP身份验证.

10.4.2 401未经授权

该请求需要用户身份验证.响应必须包含一个WWW-Authenticate标题字段(第14.47节),其中包含适用于所请求资源的质询.

我想我可能会发送一个虚假的标题WWW-Authenticate: WebForm,但仍然符合W3C规范,但感觉它违反了WWW-Authenticate标题的精神.

最后,我似乎无法找到明确说明是否允许HTTP 401响应的权威来源.我错过了这方面的权威来源吗?

Mik*_*ael 3

我想说这是不行的,因为 401 是告诉客户端提供 http 身份验证凭据。正确的响应是 403 Forbidden,简单地告诉客户端无论出于何种原因都不允许访问该资源。

  • 我正在这样做,但我意识到我需要一种方法来区分未经身份验证的请求和经过身份验证但无权限的请求。可以使用响应内容,但为此类内容提供状态代码似乎更合乎逻辑。我希望有一个权威的来源来指定如何最好地处理这种情况。 (3认同)