Tenemos un sitio ASP.Net MVC3 al que solo se puede acceder a través de HTTPS, utilizando el atributo RequireHTTPS en el controlador.Respuesta correcta a HTTP HEAD Solicitud en el sitio HTTPS solo
Estamos recibiendo numerosas solicitudes de HTTP HEAD, principalmente de lo que parecen ser bots de Twitter. La respuesta predeterminada de ASP.Net/MVC3 es un '500 Internal Server Error', y elmah y log4net están atrapando/registrando (¡ahora filtrado!).
Podría escribir un controlador específico y una ruta para manejar estas solicitudes no HTTPS según esta pregunta - Responding to HEAD Request in asp.NET MVC 3.
Pero, desde la perspectiva de los robots, ¿cuál sería la mejor respuesta? 200 para mostrar que el servidor está activo, un 302 redirigir a la url HTTPS, o seguir con el 500 ya que el sitio no es accesible a través de HTTP?
500 no me parece bien ... no es Hay un código de estado para esto? 500 sugiere que en realidad hay un error en alguna parte. –
Sugiero no lanzar un error 500. Si el sitio solo es accesible a través de HTTPS. Usaría un redireccionamiento 301 (permanente) en lugar de un 302 (temporal). También podría usar una regla de reescritura para redirigir todo el tráfico que no sea https a https resolviendo el problema. –
Estoy de acuerdo con no lanzar el error 500, pero es el comportamiento predeterminado de MVC3: 'System.InvalidOperationException: solo se puede acceder al recurso solicitado a través de SSL. en System.Web.Mvc.RequireHttpsAttribute.HandleNonHttpsRequest (AuthorizationContext filterContext) en System.Web.Mvc.RequireHttpsAttribute.OnAuthorization (AuthorizationContext filterContext) en System.Web.Mvc.ControllerActionInvoker.InvokeAuthorizationFilters (ControllerContext ControllerContext, filtros IList'1, ActionDescriptor actionDescriptor) – Chris