2010-11-29 19 views

Respuesta

24

Formalmente, 403 Prohibido es la respuesta correcta. Se define como

La autorización no sirve de ayuda y la solicitud NO DEBE repetirse.

La parte confusa puede ser "Autorización no ayudará", pero que en realidad significa "autenticación HTTP" (WWW-Authenticate)

+3

Esto significa que el usuario no debe volver a intentar la solicitud. Esto no es apropiado –

+2

Técnicamente, creo que tienes razón. En el caso de la implementación práctica, creo que un 200 con un mensaje de error basado en HTML o 302 redireccionando a otra página donde puede ocurrir el inicio de sesión basado en sesión es más común (y quizás podría decirse que más útil). – userx

+6

@Erik Philips - Esto es correcto, la solicitud no debería ser. Una vez que los encabezados de la solicitud se modifican para tener una cookie de sesión correcta (de ahí que no sea la MISMA solicitud), se otorgará acceso. – userx

5

403 Creo que es técnicamente correcto (y probablemente más eficaz si está implementando una API/protocolo personalizado).

401 no es apropiado, ya que se refiere a la autorización con un encabezado WWW-Authenticate, que no es una cookie de sesión.

Si se trata de una página web orientada al público en el que está tratando de negar el acceso basado en una cookie de sesión, 200 con un órgano apropiado para indicar que registro en el que se necesita o una redirección temporal 302 a una página de ingreso es a menudo mejor.

+0

Esto podría ser solucionable si realmente definiera un esquema de autenticación HTTP basado en cookies. –

+0

@Julian Reschke - Por definición, las cookies no tienen mucho que ver con la autenticación; principalmente, están agregando cierta cantidad de "estado" a un protocolo "sin estado", HTTP. Las cookies en sí mismas no autentican nada. Simplemente son información que se envía a un servidor que ese servidor le pidió previamente al navegador que guardara. Sí, esa información se puede usar para determinar si previamente se autenticó como usuario (normalmente a través de HTTP POST/GET). También se puede usar simplemente para indicar si ha visto un anuncio en particular anteriormente o visitado ese sitio antes y cuándo, etc. – userx

-2

Puede hacer uso de una condición de prueba y transmitir el código de error

: 401,1 al inicio de sesión falló. El intento de inicio de sesión no es exitoso, probablemente debido a un nombre de usuario o contraseña que no es válido.

que se utiliza específicamente para la contraseña incorrecta o el nombre de usuario y la contraseña no coincidentes. Espero que esto te ayude.

+0

401.1 parece ser específico de Microsoft http://support.microsoft.com/kb/247593 – deamon

+0

Es Hay un RFC que define 401.1? – deamon

+0

Los códigos de estado HTTP constan de tres dígitos. No existe NNN.N en el cable (excepto tal vez en el * mensaje *, que no tiene ningún significado) –

Cuestiones relacionadas