Domanda

Mi piacerebbe sostenere correttamente la richiesta HEAD HTTP quando i bot ha colpito il mio sito ASP.NET MVC utilizzando TESTA. E 'stato portato alla mia attenzione che tutte le richieste HTTP HEAD al sito tornavano 404, in particolare da http://downforeveryoneorjustme.com . Il che è davvero fastidioso. Sarebbe meglio se passare a GET come tutti gli altri bot buoni là fuori.

Se mi limito a cambiare [AcceptVerbs(HttpVerbs.Get)] per [AcceptVerbs(HttpVerbs.Get | HttpVerbs.Head)] volontà MVC sapere di abbandonare il corpo della richiesta?

Che cosa avete fatto per le richieste HEAD supporto HTTP? (Esempio di codice sarebbe grande!)

È stato utile?

Soluzione

Ho creato un metodo semplice azione in un progetto ASP.Net MVC 2:

public class HomeController : Controller
{
    public ActionResult TestMe()
    {
        return View();
    }
}

Poi ho lanciato Fiddler e costruito un HTTP GET richiesta per colpire questo URL:

http://localhost.:51149/Home/TestMe

Il contenuto della pagina intera previsto è stato restituito.

Poi, ho cambiato la richiesta di utilizzare un HTTP HEAD al posto di un HTTP GET . Ho ricevuto solo le informazioni di testa previsto e nessuna info corpo in uscita prima.

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

La mia ipotesi è che si sta includendo un vincolo sul metodo di azione in modo tale che sarà solo rispondere alle HTTP GET verbi. Se si fa qualcosa di simile, funzionerà sia per e HEAD , oppure è possibile omettere il vincolo del tutto se fornisce alcun valore.

public class HomeController : Controller
{
    [AcceptVerbs(new[] {"GET", "HEAD"})]
    public ActionResult TestMe()
    {
        return View();
    }
}

Altri suggerimenti

È possibile raggiungere il risultato semplicemente facendo seguito

[AcceptVerbs(HttpVerbs.Get | HttpVerbs.Head)]
public ActionResult TestMe() =>View();
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top