2010-08-10 5 views
5

nach mehreren Monaten, die Website aus den Suchergebnissen in jeder großen Suchmaschine verschwinden, fand ich endlich einen möglichen Grund.HEAD-Anfrage erhält "403 verboten", während GET "200 ok"?

Ich verwendete WebBug, um Server-Header zu untersuchen. Sehen Sie den Unterschied, wenn die Anfrage HEAD oder GET lautet.

HEAD Gesendete Daten:

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

HEAD Empfangene Daten:

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 Gesendete Daten:

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

Empfangene Daten 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 

Jetzt Browsern standardmäßig eine GET-Anfrage senden (zumindest ist es das, was Firebug sagt). Ist es möglich, dass Crawler stattdessen eine HEAD-Anfrage senden? Wenn ja, warum antwortet nur dieser Server mit einem 403, während andere Server von anderen Seiten, die ich behalte, nicht funktionieren?

Falls es wichtig ist, ist die einzige Linie, die in .htaccess (es sei denn, mein Kunde änderte es, als sie mich in ihren Server-Zugriff nicht geben wollen)

AddType text/x-component .htc 

UPDATE
Danke @Ryk. FireBug und Fiddler senden beide GET-Anfragen, die 200 (oder 300) Antworten erhalten. Wie erwartet. Also denke ich, es ist entweder eine schlechte Servereinstellung (obwohl es seltsam ist, da das Hosting von einem großen Unternehmen mit Millionen von Clients stammt) oder etwas, das sie in den .htaccess legen. Sie werden mich in ihren Account schauen lassen müssen.

Der zweite Teil meiner Frage war, wenn das die Ursache der Website sein könnte, die in keiner Suchmaschine erscheint (site: www.attu.it gibt keine Ergebnisse). Jeder Gedanke?

UPDATE 2
Nach einigen Hantieren stellt sich heraus, da die phpMyAdmin Roboter-Blockierung war .htaccess im Stammverzeichnis, das jede Anforderung von Robotern verursacht mit einer 403

Forbidden gesendet werden zurück
+0

Es ist ein Fehler mit dem Server, der Client will es behoben, sollten sie Ihnen zumindest einige Zugriffe geben. Fragen Sie sie zumindest, ob sie eine Kopie des aktuellen .htaccess sehen könnten. –

Antwort

1

Ich würde vorschlagen, Fiddler zu installieren und die Anfrage genau zu betrachten. Ich habe manchmal gesehen, dass ein Symbol auf der Seite, das sich in einem Ordner befindet, der Authentifizierung erfordert, eine 403 zurückgibt.

Fiddler wird Ihnen eine gute Idee geben, und Sie können auch Firefox ausprobieren und das FireBug Add-on installieren und die Seite auf Fehler überprüfen.

Mit Blick auf die Seite bekomme ich eine Reihe von 404 für die favicon.ico, aber abgesehen davon, wenn ich eine einfache GET-Anfrage bekomme ich eine 200 OK, aber wenn ich einen Kopf, bekomme ich auch eine 403. Schau es dir jetzt an.

UPDATE: Ich denke, es könnte eine Konfiguration auf dem Apache-Server sein, aber nicht 100% sicher.http://hc.apache.org/httpclient-3.x/methods/head.html

UPDATE2: Das Lesen dieser http://www.pubbs.net/200811/httpd/17210-usershttpd-how-to-reject-head-request.html lässt mich glauben, dass Ihr Apache-Server eingestellt werden könnte, um HEAD-Anfragen abzulehnen. In diesem Fall wird es zurückgeben 403.

+0

@mjsarfatti - Ich bin mir nicht sicher, aber wenn die Crawler/Roboter die HEAD-Anfrage verwenden, um Websites zu crawlen, dann haben Sie ein Problem. – Ryk

+0

Ich fand Curl leichter als Fiddler –

1

Einige Administrator in der httpd.conf

< Grenze PUT DELETE COPY MOVE>
Auftrag schreibt verweigern, erlauben
von allen von 10,0
zulassen
Deny </Limit>

< LimitExcept PUT COPY MOVE DELETE>
Auftrag verweigern, erlauben
aus allen Deny
</LimitExcept>

Diese "Verboten" auf eine HEAD-Anforderung erzeugen. Sie sollten dies überprüfen.

1

Ich hatte dieses genaue Problem, weil ich signierte URLs verwendete.

Jede signierte URL ist nur für eine Methode geeignet (z. B. GET oder HEAD). Wenn Sie mehrere Methoden verwenden möchten, müssen Sie mehrere URLs haben.

+0

Ich denke, das ist das Problem, das ich gerade mit meinem Gradle Build bekomme: https://stackoverflow.com/questions/48253755/gradle-failing-to-download-dependency-when-head-request -Fehler. Hast du eine Idee, wie das funktioniert? –