ボットがHEADを使用してASP.NETMVCサイトにアクセスしたときのHTTP HEADリクエストを正しくサポートしたいのですが、すべてのHTTP HEAD =サイトへのリクエストは、特に http://downforeveryoneorjustme.com から404を返していました。これは本当に迷惑です。他のすべての優れたボットと同じようにGETに切り替えてほしいと思います。
[AcceptVerbs(HttpVerbs.Get)]
を[AcceptVerbs(HttpVerbs.Get | HttpVerbs.Head)]
に変更しただけの場合、MVCはリクエストの本文を削除することを認識しますか?
HTTP HEADリクエストをサポートするために何をしましたか?(コードサンプルは素晴らしいでしょう!)
ASP.Net MVC2プロジェクトで簡単なアクションメソッドを作成しました。
public class HomeController : Controller
{
public ActionResult TestMe()
{
return View();
}
}
次に、Fiddlerを起動し、HTTP GETリクエストを作成してこのURLにアクセスしました。
http://localhost.:51149/Home/TestMe
期待されたフルページコンテンツが返されました。
次に、HTTP GETの代わりにHTTP HEADを使用するようにリクエストを変更しました-)。期待される頭の情報だけを受け取り、生の出力には体の情報はありませんでした。
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
私の推測では、HTTP GET動詞にのみ応答するように、アクションメソッドに制約を含めています。このようなことをすると、[〜#〜] get [〜#〜]との両方で機能します)[〜#〜] head [〜#〜]、または値が提供されない場合は制約を完全に省略できます。
public class HomeController : Controller
{
[AcceptVerbs(new[] {"GET", "HEAD"})]
public ActionResult TestMe()
{
return View();
}
}
以下を行うだけで結果を得ることができます
[AcceptVerbs(HttpVerbs.Get | HttpVerbs.Head)]
public ActionResult TestMe() =>View();