当机器人使用HEAD访问我的ASP.NET MVC站点时,我希望正确地支持HTTP HEAD请求。我注意到,对该站点的所有HTTP HEAD请求都返回404,特别是来自http://downforeveryoneorjustme.com的请求。这真的很烦人。希望他们能像其他优秀的机器人一样换成其他的机器人。
如果我只是将[AcceptVerbs(HttpVerbs.Get)]改为[AcceptVerbs(HttpVerbs.Get | HttpVerbs.Head)],MVC会知道删除请求的正文吗?
您采取了哪些措施来支持HTTP HEAD请求?(代码样例将非常棒!)
发布于 2010-07-08 01:06:18
我在一个ASP.Net MVC2项目中创建了一个简单的操作方法:
public class HomeController : Controller
{
public ActionResult TestMe()
{
return View();
}
}然后我启动了Fiddler并构建了一个HTTP GET请求来访问这个URL:
http://localhost.:51149/Home/TestMe
返回了预期的整页内容。
然后,我将请求更改为使用HTTP HEAD,而不是HTTP GET。我在原始输出中只收到了预期的head信息,而没有body信息。
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();
}
}发布于 2013-02-23 16:11:35
您只需执行以下操作即可达到此效果
[AcceptVerbs(HttpVerbs.Get | HttpVerbs.Head)]
public ActionResult TestMe() =>View();https://stackoverflow.com/questions/3181500
复制相似问题