HEAD请求收到“403禁止”而GET“200 ok”?

时间:2010-08-10 23:32:59

标签: http-headers get bots head

在网站从每个主要搜索引擎的搜索结果中消失几个月后,我终于找到了可能的原因。

我使用WebBug来调查服务器头。如果请求是HEAD或GET,请查看差异。

HEAD发送数据:

HEAD / HTTP/1.1
Host: www.attu.it
Connection: close
Accept: */*
User-Agent: WebBug/5.0

HEAD收到的数据:

HTTP/1.1 403 Forbidden
Date: Tue, 10 Aug 2010 23:01:00 GMT
Server: Apache/2.2
Connection: close
Content-Type: text/html; charset=iso-8859-1

获取已发送数据

GET / HTTP/1.1
Host: www.attu.it
Connection: close
Accept: */*
User-Agent: WebBug/5.0

GET收到的数据:

HTTP/1.1 200 OK
Date: Tue, 10 Aug 2010 23:06:15 GMT
Server: Apache/2.2
Last-Modified: Fri, 08 Jan 2010 08:58:01 GMT
ETag: "671f91b-2d2-47ca362815840"
Accept-Ranges: bytes
Content-Length: 722
Connection: close
Content-Type: text/html

// HTML code here

现在,浏览器默认发送GET请求(至少这是firebug所说的)。抓取工具是否可能发送HEAD请求?如果是这样,为什么只有这个服务器响应403,而其他站点的其他服务器我没有?

如果它很重要,.htaccess中唯一的行是(除非我的客户更改了它,因为他们不想让我访问他们的服务器)

AddType text/x-component .htc

更新
谢谢@Ryk。 FireBug和Fiddler都发送GET请求,获得200(或300)个响应。正如所料。所以我猜这可能是服务器设置不好(尽管很奇怪,因为托管来自拥有数百万客户的大公司)或者他们放在.htaccess中的东西。他们将不得不让我调查他们的帐户。

我的问题的第二部分是,如果这可能是网站没有出现在任何搜索引擎中的原因(网站:www.attu.it 没有给出结果)。有什么想法?

更新2
在一些摆弄之后,事实证明在根目录中有phpMyAdmin机器人阻止.htaccess,这导致机器人的任何请求被发送回403 Forbidden

3 个答案:

答案 0 :(得分:1)

我建议安装Fiddler并仔细查看请求。我有时看到页面上的图标位于需要验证的文件夹中会导致返回403。

Fiddler会给你一个好主意,你也可以尝试Firefox并安装FireBug插件并检查页面是否有错误。

在网站上我得到了一堆404的favicon.ico,但除此之外,当我做一个简单的GET请求时,我得到200 OK,但是当我做一个HEAD时,我也得到了403.现在进入它。

更新:我认为它可能是Apache服务器上的配置,但不是100%肯定。 http://hc.apache.org/httpclient-3.x/methods/head.html

UPDATE2:读取此http://www.pubbs.net/200811/httpd/17210-usershttpd-how-to-reject-head-request.html让我相信您的Apache服务器可以设置为拒绝HEAD请求。在这种情况下,它将返回403。

答案 1 :(得分:1)

有些管理员在httpd.conf中写道

< Limit PUT DELETE COPY MOVE>
                        命令拒绝,允许
                        拒绝所有人                         允许从10.0
< /限制>

< LimitExcept PUT DELETE COPY MOVE>
                      命令拒绝,允许
                      拒绝所有人 < / LimitExcept中>

这会对HEAD请求产生“禁止”。你应该检查一下。

答案 2 :(得分:1)

我遇到了这个问题,因为我使用的是签名网址。

每个签名的URL仅适用于一种方法(例如GET或HEAD)。如果您想使用多种方法,则必须拥有多个网址。