2010-08-10 236 views
5

經過幾個月的搜索結果,每個主要的搜索引擎都消失後,我終於找到了一個可能的原因。HEAD請求在GET「200 ok」時收到「403禁止」?

我用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請求(至少這是什麼螢火說)。抓取工具是否有可能發送HEAD請求?如果是這樣,爲什麼只有這臺服務器響應一個403,而其他網站我所需要的其他服務器不會?

在情況下,它是很重要的,目前在.htaccess中唯一的行(除非我的客戶改變了它,因爲他們不想讓我進入他們的服務器)

AddType text/x-component .htc 

UPDATE
謝謝@Ryk。 FireBug和Fiddler都發送GET請求,獲得200(或300)個響應。如預期。所以我想這可能是服務器設置不當(即使主機來自擁有數百萬客戶端的大型公司,這很奇怪),或者它們放在.htaccess中。他們將不得不讓我看看他們的賬戶。

我的問題的第二部分是,如果這可能是網站沒有出現在任何搜索引擎的原因(網站:www.attu.it沒有給出結果)。任何想法?

UPDATE 2
後一些擺弄周圍,原來有phpMyAdmin的機器人阻擋在根目錄中,導致從機器人的任何請求的.htaccess與禁止

+0

這是一個服務器的錯誤,客戶希望它修復,他們應該給你至少一些訪問權限。至少,問問他們是否可以看到當前.htaccess的副本。 – 2010-08-11 00:25:48

回答

1

403被髮送回我會建議安裝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

+0

@mjsarfatti - 我不確定,但是如果抓取工具/機器人使用HEAD請求來抓取網站,那麼是的,您將遇到問題。 – Ryk 2010-08-13 01:20:26

+0

我發現捲曲比提琴更容易 – 2018-01-14 20:26:13

1

一些管理員在httpd.conf

<界限put DELETE COPY MOVE寫道>
訂單拒絕,允許
所有
拒絕從10.0
允許< /限制>

< LimitExcept中PUT DELETE COPY MOVE>
訂單拒絕,允許
從拒絕所有
</LimitExcept中>

這產生 「禁止」,以HEAD請求。你應該檢查這個。

1

我有這個確切的問題,因爲我使用簽名的URL。

每個簽名的URL只適用於一種方法(例如GET或HEAD)。如果你想使用多種方法,你將不得不擁有多個URL。

+0

我認爲這是我目前使用我的Gradle構建的問題:https://stackoverflow.com/questions/48253755/gradle-failing-to-download-dependency-when-head-request -fails。你有什麼想法如何解決這個問題? – 2018-01-14 20:26:59