asp.net-mvc - tag - razor reference
Responda a las solicitudes HTTP HEAD utilizando ASP.NET MVC (2)
Me gustaría apoyar correctamente la solicitud HTTP HEAD cuando los bots lleguen a mi sitio ASP.NET MVC usando HEAD. Me llamó la atención que todas las solicitudes de HEAD HTTP al sitio devolvieran 404, especialmente desde http://downforeveryoneorjustme.com . Lo que es realmente molesto. Ojalá cambiaran a GET como todos los otros buenos bots que hay.
Si simplemente cambio [AcceptVerbs(HttpVerbs.Get)]
a [AcceptVerbs(HttpVerbs.Get | HttpVerbs.Head)]
¿MVC sabrá que debe eliminar el cuerpo de la solicitud?
¿Qué has hecho para soportar las solicitudes HTTP HEAD? (Ejemplo de código sería genial!)
Creé un método de acción simple en un proyecto ASP.Net MVC 2:
public class HomeController : Controller
{
public ActionResult TestMe()
{
return View();
}
}
Luego lancé Fiddler y construí una solicitud HTTP GET para llegar a esta URL:
http://localhost.:51149/Home/TestMe
Se devolvió el contenido de página completo esperado.
Luego, cambié la solicitud para usar un HEAD HTTP en lugar de un GET HTTP . Recibí solo la información de la cabeza esperada y ninguna información del cuerpo en la salida sin procesar.
HTTP/1.1 200 OK
Server: ASP.NET Development Server/10.0.0.0
Date: Wed, 07 Jul 2010 16:58:55 GMT
X-AspNet-Version: 4.0.30319
X-AspNetMvc-Version: 2.0
Cache-Control: private
Content-Type: text/html; charset=utf-8
Content-Length: 1120
Connection: Close
Supongo que está incluyendo una restricción en el método de acción, de modo que solo responderá a los verbos HTTP GET . Si haces algo como esto, funcionará tanto para GET como para HEAD , o puedes omitir la restricción por completo si no proporciona ningún valor.
public class HomeController : Controller
{
[AcceptVerbs(new[] {"GET", "HEAD"})]
public ActionResult TestMe()
{
return View();
}
}
Puedes lograr el resultado simplemente haciendo lo siguiente
[AcceptVerbs(HttpVerbs.Get | HttpVerbs.Head)]
public ActionResult TestMe() =>View();