代码之家  ›  专栏  ›  技术社区  ›  DavGarcia

使用ASP.NET MVC响应HTTP头请求

  •  34
  • DavGarcia  · 技术社区  · 15 年前

    当bots使用head访问我的ASP.NET MVC站点时,我希望正确支持HTTP head请求。我注意到,所有对站点的HTTP头请求都返回404,特别是来自 http://downforeveryoneorjustme.com . 这真的很烦人。希望他们能像其他所有的好机器人一样。

    如果我只是换衣服 [AcceptVerbs(HttpVerbs.Get)] [AcceptVerbs(HttpVerbs.Get | HttpVerbs.Head)] MVC是否知道放弃请求主体?

    您做了什么来支持HTTP头请求?(代码示例太好了!)

    2 回复  |  直到 8 年前
        1
  •  52
  •   a7drew    15 年前

    我在ASP.NET MVC 2项目中创建了一个简单的操作方法:

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

    然后我启动了小提琴,建立了一个 http get 请求访问此URL:

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

    返回了预期的整页内容。

    然后,我将请求更改为使用 HTTP头 而不是 http get . 我只收到预期的头部信息,在原始输出中没有身体信息。

    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
    

    我的猜测是,您将在action方法上包含一个约束,这样它将只响应 http get 动词。如果你做这样的事,对两个人都有效 得到 或者,如果约束不提供值,则可以完全忽略它。

    public class HomeController : Controller
    {
        [AcceptVerbs(new[] {"GET", "HEAD"})]
        public ActionResult TestMe()
        {
            return View();
        }
    }
    
        2
  •  26
  •   tchelidze    8 年前

    只需执行以下操作就可以获得结果

    [AcceptVerbs(HttpVerbs.Get | HttpVerbs.Head)]
    public ActionResult TestMe() =>View();