Estoy seguro de que la gente tiene diferentes opiniones sobre esto.

Quiero saber como otros desarrolladores piensan sobre el manejo de este escenario.

Pre-Condición

La web de la aplicación/servicio requiere autenticación (es decir, el usuario debe haber iniciado sesión).

No es de acceso público.


Web Escenario De Aplicación

Dirección URL de ejemplo: ~/PurchaseOrder/View/1234

  1. Orden de compra registro NO existe en la base de datos.
  2. Orden de compra existe un registro, pero el usuario NO tiene permiso para ver, debido a que algunos de los requisitos empresariales.

¿Cómo decidir entre las dos opciones siguientes:

  • De la pantalla de Orden de Compra No se Encontró página web con HTTP 200.
  • Establece el estado de la respuesta HTTP 404 No Encontrado y redirigir a una genérica página de error 404.

API de Servicio Web del Escenario

Digamos que la Orden de Compra registro es recuperable a partir de un servicio web en formato JSON.

Obviamente, la API volvería HTTP 404 si el registro no existe.

Pero ¿cómo debe responder cuando el usuario no tiene permiso para ver que Compra Orden de registro? Conjuntos de código de respuesta 404 y devolver un mensaje de error en JSON???

Gracias!

InformationsquelleAutor stun | 2013-07-26

1 Comentario

  1. 6

    Para DESCANSAR API de servicio web, el retorno 404 si no se encuentra el registro.
    Si el usuario no tiene permiso de retorno 403 Forbidden» si quieres dar a conocer que el registro existe, pero el usuario no tiene permiso. Volver 404 si usted NO quiere revelar el hecho de que existe el registro cuando el usuario no tiene permiso para verlo.

    De la HTTP spec:

    10.4.4 403 Prohibido

    El servidor entiende la petición, pero se niega a cumplirla.
    La autorización no será de ayuda y la solicitud NO se DEBE repetir. Si
    el método de solicitud no fue de la CABEZA y el servidor desea hacer público
    por qué la solicitud no ha sido cumplido, se DEBE describir la razón
    por la negativa de la entidad. Si el servidor no desea hacer
    esta información disponible para el cliente, el código de estado 404 (No
    Encuentra) puede utilizarse en su lugar.

    Para la aplicación web de escenario, lo más probable es técnicamente correcto para devolver un mensaje de error 404 (o 403) junto con un error de página en el cuerpo de la respuesta en caso de un error, pero el regreso de un 200 puede resultar en una mejor experiencia de usuario, dependiendo de lo que los navegadores de tu audiencia está utilizando. (He oído hablar de los problemas con algunos navegadores antiguos, ignorando la página de error personalizada con un 4xx error y en lugar de mostrar su propia página de error, mientras que ellos siempre van a mostrar el contenido de una respuesta 200. Los navegadores modernos no debería tener este problema, sin embargo.)

Dejar respuesta

Please enter your comment!
Please enter your name here