Запрос HEAD получает 403 запрещено, а GET 200 в порядке?

после нескольких месяцев исчезновения сайта из результатов поиска во всех основных поисковых системах я наконец выяснил возможную причину.

Я использовал 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. Им придется позволить мне просмотреть их аккаунт.

Вторая часть моего вопроса заключалась в том, может ли это быть причиной того, что веб-сайт не отображается ни в одной поисковой системе (site:www.attu.it не дает результатов). Любая мысль?

ОБНОВЛЕНИЕ 2
После некоторой возни выяснилось, что в корневом каталоге был файл .htaccess, блокирующий роботов phpMyAdmin, из-за которого любой запрос от роботов возвращался с ошибкой 403 Forbidden.


person mjsarfatti    schedule 10.08.2010    source источник
comment
Это ошибка сервера, клиент хочет, чтобы она была исправлена, они должны дать вам хоть какой-то доступ. По крайней мере, спросите их, могут ли они увидеть копию текущего .htaccess.   -  person Jon Hanna    schedule 11.08.2010


Ответы (3)


Я бы предложил установить 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

ОБНОВЛЕНИЕ 2: чтение этого http://www.pubbs.net/200811/httpd/17210-usershttpd-how-to-reject-head-request.html заставляет меня поверить, что ваш сервер Apache может быть настроен на отклонение запросов HEAD. В этом случае он вернет 403.

person Ryk    schedule 10.08.2010
comment
@mjsarfatti - я не уверен, но если сканеры / роботы используют запрос HEAD для сканирования сайтов, тогда да, у вас возникнет проблема. - person Ryk; 13.08.2010
comment
Я нашел завиток проще, чем скрипач - person Vic Seedoubleyew; 14.01.2018

Какой-то админ пишет в httpd.conf

‹Limit PUT DELETE COPY MOVE>
Запретить запретить,разрешить
Запретить от всех
Разрешить от 10.0
‹/Limit>

‹LimitExcept PUT DELETE COPY MOVE>
Запретить,разрешить
Запретить всем
‹/LimitExcept>

Это создает «Запрещено» для запроса HEAD. Вы должны проверить это.

person Oscar Raig Colon    schedule 14.09.2011

У меня была именно эта проблема, потому что я использовал подписанные URL-адреса.

Каждый подписанный URL подходит только для одного метода (например, GET или HEAD). Если вы хотите использовать несколько методов, вам потребуется несколько URL-адресов.

person Paul Draper    schedule 16.12.2013
comment
Я думаю, что это проблема, с которой я сейчас сталкиваюсь со своей сборкой Gradle: stackoverflow.com/questions/48253755/. У вас есть идеи, как обойти это? - person Vic Seedoubleyew; 14.01.2018