Возврат статуса HTTP 401 для ответов AJAX без WWW-аутентификации

Можно ли вернуть статус HTTP 401 для ответа на вызов AJAX, если вы хотите сообщить, что пользователь не вошел в систему, хотя механизм входа в систему основан на форме, а не HTTP-based (Basic, Digest и т.д.)?

Ответ здесь говорит о том, что следует использовать 401: qaru.site/info/737/...

И это сообщение показывает фактический пример того, кто использует 401 для ответа AJAX: http://www.bennadel.com/blog/2228-some-thoughts-on-handling-401-unauthorized-errors-with-jquery.htm

Однако RFC 2616 для HTTP/1.1 четко заявляет, что необходим специальный заголовок, подразумевая, что он может использоваться только для аутентификации HTTP.

10.4.2 401 Несанкционированный

Запрос требует аутентификации пользователя. Ответ ДОЛЖЕН включает поле заголовка WWW-Authenticate (раздел 14.47), содержащее вызов, применимый к запрашиваемому ресурсу.

Я думаю, что я могу, вероятно, отправить поддельный заголовок вроде WWW-Authenticate: WebForm и по-прежнему соответствовать спецификациям W3C, но похоже, что он нарушает дух заголовка WWW-Authenticate.

В конце концов, я не могу найти авторитетный источник, который явно указывает, разрешен ли HTTP 401 для ответов AJAX. Есть ли авторитетный источник по этому поводу, который я пропустил?

Ответ 1

Я бы сказал, что это не нормально, поскольку 401 предназначено для того, чтобы сообщить клиенту предоставить учетные данные для проверки подлинности. Правильный ответ был бы 403 Forbidden, просто говоря клиенту, что он не разрешает доступ к ресурсу по любой причине.