Запрос HEAD получает "403 запрещено", а получает "200 нормально" - PullRequest
6 голосов
/ 11 августа 2010

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

Я использовал 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 Отправленные данные:

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

UPDATE
Спасибо @Ryk. FireBug и Fiddler отправляют запросы GET, которые получают 200 (или 300) ответов. Как и ожидалось. Поэтому я думаю, что это либо плохая настройка сервера (хотя это странно, поскольку хостинг принадлежит крупной компании с миллионами клиентов), либо что-то, что они вставили в .htaccess. Им придется дать мне посмотреть на их счет.

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

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

.

Ответы [ 3 ]

1 голос
/ 14 сентября 2011

Некоторые администраторы пишут в httpd.conf


Заказ отказать, разрешить
Запретить от всех
Разрешить от 10,0


Заказ отказать, разрешить
Запретить от всех

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

1 голос
/ 17 декабря 2013

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

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

1 голос
/ 11 августа 2010

Я бы предложил установить Fiddler и внимательно изучить запрос.Я иногда видел, что значок на странице, которая находится в папке, требующей аутентификации, приводит к возвращению 403.

Fiddler даст вам хорошую идею, и вы также можете попробовать Firefox и установить FireBug add-и проверяя страницу на наличие ошибок.

Глядя на сайт, я получаю кучу 404 для favicon.ico, но кроме этого, когда я делаю простой запрос GET, я получаю 200 OK, но когда ясделайте ГОЛОВУ, я также получаю 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.

...