Pregunta

Estoy implementando una HttpRequestValidationException en mi controlador Application_Error y, si es posible, quiero mostrar un mensaje personalizado.

Ahora estoy pensando en el código de estado.En mi ejemplo actual, envía un 200, lo cual creo que no debería hacerse.En su lugar, me gustaría enviar la Solicitud 400 incorrecta más apropiada (en mi humilde opinión).Sin embargo, al mismo tiempo, me gustaría utilizar Response.Write para ingresar un mensaje personalizado.Firefox lo muestra correctamente, pero IE7 me muestra la página de error predeterminada de Internet Explorer que no es útil.

Por un lado, supongo que Internet Explorer simplemente supone que todo <> 200 simplemente no tiene ningún contenido "bueno", y el RFC no es muy claro aquí.

Entonces me pregunto: ¿enviar un HTTP 200 para una página de error causada por una excepción HttpRequestValidationException es una buena práctica o no?¿Existen buenas alternativas?

¿Fue útil?

Solución

Un código de respuesta HTTP 200 no indica un error.Indica que todo estuvo bien.No debe utilizar un código de respuesta 200 para un error.

Internet Explorer muestra su página "Errores amigables" si la respuesta tiene menos de 512 bytes.Aquí hay más información sobre este tema: http://weblogs.asp.net/scottgu/archive/2006/04/09/442332.aspx,

Otros consejos

No, ciertamente no es una buena práctica.Los códigos de estado 2XX significan (entre otras cosas) que el la solicitud es válida.Lo cual es todo lo contrario a generar una excepción HttpRequestValidationException.

Lamentablemente, no sé cómo hacer que IE se comporte correctamente.Una forma ligeramente mejor que enviar un 200 sería redirigirlo a una página de error, pero aún está lejos de ser perfecta.

Internet Explorer muestra lo que ellos llaman un "mensaje de error HTTP amigable" cuando la respuesta es 4xx o 5xx.El usuario puede desactivar esta opción en el cuadro de diálogo Herramientas.Opciones.Avanzadas[Navegación] de IE.

Enviar un 200 para una página de error generalmente es una mala práctica.Una alternativa sería tener una página de "Error" válida que sea supuesto para mostrar mensajes de error (por lo que 200 estaría bien) y luego usar una redirección 3xx a esa página.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top