我的网站上有简单的表格:
<form method="POST" action="Home/Import"> ... </form>
由于抓取工具向HEAD
发送Home/Import
请求,我收到大量错误报告
通知表单是 POST 。
问题
HEAD
请求的好方法是什么?详细说明:
如果重要的话,我会使用Post-Redirect-Get模式。
平台:IIS 7.5上的ASP.NET MVC 3.0(C#)
答案 0 :(得分:0)
您可以在网络服务器级别禁用头部请求...对于apache:
<LimitExcept GET POST>
deny from all
</LimitExcept>
您可以在robots.txt级别添加以下内容:
Disallow: /Home/Import
头部请求用于获取有关页面的信息,而不是获取整个页面,如上次修改时间,大小等。这是一个有效的事情。由于头部请求,您的脚本不应该出错,而这些错误可能是因为代码中缺少验证。您的代码可以检查请求http方法是否为“head”并执行不同的操作。
答案 1 :(得分:0)
1)爬虫通常会发出HEAD请求以获取响应的mime类型。
2)HEAD请求不应调用POST的动作处理程序。如果我看到我收到很多关于资源的HEAD请求,我不希望爬虫爬行,我会给它一个链接,我希望它能够爬行。大多数抓取工具都会阅读Robots.txt
答案 2 :(得分:0)
4年前但仍在回答问题#1:Google确实试图抓取POST表单,只需发送一个&#34; GET&#34;到URL和实际&#34; POST&#34;要求。见their blog on this。原因在于网络性质:糟糕的网络开发者隐藏了POST搜索表单背后的内容链接。要达到这些内容,搜索引擎必须即兴发挥。
关于#2:robots.txt的可靠性各不相同。
关于#3:超干净的方式可能是:HTTP状态405如果特别是HEAD请求是您的问题,则不允许使用方法。但不确定浏览器是否会喜欢这个。