2012-08-01 136 views
7

是否有頭文件可以通過HTTP請求發送,告訴Web服務器僅向您發送標題並且沒有正文內容?發送一個HTTP請求,告訴服務器只返回頭部而不返回正文?

我正在使用cURL來提出這樣的請求,但從技術上講,我認爲它應該可能與簡單的頭部作爲請求的一部分發送。

例如,存在304未修改的HTTP響應代碼。當您使用緩存標記或日期時間信息向服務器發出請求時,服務器可以檢測到並僅返回標頭作爲響應,告訴用戶代理將其緩存用作響應。這意味着當涉及到帶寬時,服務器的響應非常非常小。

但是有沒有一個頭可以發送到服務器,使服務器只返回一個頭和沒有正文內容?

這裏的想法是使HTTP請求,否則可能會返回大量的數據,非常小。比如一個會返回JSON數據或日誌的API調用,實際上用戶代理感興趣的唯一事情就是確保請求通過,而不是別的。這是爲了在身體可能存在的情況下儘量減少進出服務器的帶寬,但對於用戶代理正在做什麼而言,並不是必需的。

儘管可以設計一個API來監聽特定的自定義標題或者什麼,但我寧可不這樣做,除非必須。但是我一直無法找到是否有一種標準化的方式來發出HTTP請求,告訴服務器不要發送任何正文內容?

回答

14

如果服務器支持它,則有HEAD操作(而不是GET或POST)。這告訴服務器只發送頭文件,而不是主體。

HEAD方法與GET相同,只是服務器不能在響應中返回消息主體 。

2

您正在尋找動詞HEAD。如果你正在使用curl與PHP,這將這樣的伎倆:

curl_setopt($c, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($c, CURLOPT_CUSTOMREQUEST, 'HEAD'); 
curl_setopt($c, CURLOPT_HEADER, 1); 
curl_setopt($c, CURLOPT_NOBODY, true); 

如果您使用的是PHP,雖然(它可能很好,也算在不同情況下),該腳本將繼續運行until any output is sent(中在REQUEST_METHOD下注)。所以如果你擔心服務器的壓力,那麼你可能需要其他的東西,如果這適合。

對我來說,你看起來更像是一個'ping',爲什麼不簡單地請求一個什麼都不做的文件,而是返回一個確定的類型,甚至可能只是HTTP 200 OK(即一個空文件)?

+0

我正在尋找HEAD請求,是的。我主要考慮減少帶寬的方式,而不是內容生成中的服務器壓力(我將以不同方式處理)。我只是在尋找一種標準化的方式,而不是一些使之發生的API規則或參數。但是,謝謝! – kingmaple 2012-08-02 07:32:03

相關問題