http請求頭

shupan001發表於2011-12-06
HTTP請求包括三部分:請求行(Request Line),頭部(Headers)和資料體(Body)。其中,請求行由請求方法(method),請求網址Request-URI和協議 (Protocol)構成,而請求頭包括多個屬性,資料體則可以被認為是附加在請求之後的文字或二進位制檔案。

  下面這個例子顯示了一個HTTP請求的Header內容,這些資料是真正以網路HTTP協議從IE瀏覽器傳遞到Apache伺服器上的。

GET /qingdao.html HTTP/1.1

Accept:text/html, */*

Accept-Language:zh-cn

Accept-Encoding:gzip,deflate

User-Agent:Mozilla/4.0(compatible;MSIE 5.01;Windows NT 5.0;DigExt)

Host: www.6book.net

Referer: http://www.6book.net/beijing.html

Connection:Keep-Alive


這段程式使用了6個Header,還有一些Header沒有出現。我們參考這個例子具體解釋HTTP請求格式。

1.HTTP請求行:請求行格式為Method Request-URI Protocol。在上面這個例子裡,"GET / HTTP/1.1"是請求行。

2.Accept:指瀏覽器或其他客戶可以接愛的MIME檔案格式。可以根據它判斷並返回適當的檔案格式。

3.Accept-Charset:指出瀏覽器可以接受的字元編碼。英文瀏覽器的預設值是ISO-8859-1.

4.Accept-Language:指出瀏覽器可以接受的語言種類,如en或en-us,指英語。

5.Accept-Encoding:指出瀏覽器可以接受的編碼方式。編碼方式不同於檔案格式,它是為了壓縮檔案並加速檔案傳遞速度。瀏覽器在接收到Web響應之後先解碼,然後再檢查檔案格式。

6.Authorization:當使用密碼機制時用來標識瀏覽器。

7.Cache-Control:設定關於請求被代理伺服器儲存的相關選項。一般用不到。

8.Connection:用來告訴伺服器是否可以維持固定的HTTP連線。HTTP/1.1使用Keep-Alive為預設值,這樣,當瀏覽器需要多個檔案時(比如一個HTML檔案和相關的圖形檔案),不需要每次都建立連線。

9.Content-Type:用來表名request的內容型別。可以用HttpServletRequest的getContentType()方法取得。

10.Cookie:瀏覽器用這個屬性向伺服器傳送Cookie。Cookie是在瀏覽器中寄存的小型資料體,它可以記載和伺服器相關的使用者資訊,也可以用來實現會話功能。

11.Expect:表時客戶預期的響應狀態。

12.From:給出客戶端HTTP請求負責人的email地址。

13.Host:對應網址URL中的Web名稱和埠號。

14.If-Match:供PUT方法使用。

15.If-Modified-Since:客戶使用這個屬性表明它只需要在指定日期之後更改過的網頁。因為瀏覽器可以使用其儲存的檔案而不必從伺服器請求,這樣節省了Web資源。由於Servlet是動態生成的網頁,一般不需要使用這個屬性。

16.If-None-Match:和If-Match相反的操作,供PUT方法使用。

17.If-Unmodified-Since:和If-Match-Since相反。

18.Pragma:這個屬性只有一種值,即Pragma:no-cache,表明如果servlet充當代理伺服器,即使其有已經儲存的網頁,也要將請求傳遞給目的伺服器。

19.Proxy-Authorization:代理伺服器使用這個屬性,一般用不到。

20.Range:如果客戶有部分網頁,這個屬性可以請求剩餘部分。

21.Referer:表明產生請求的網頁URL。
比如從網頁/beijing.html中點選一個連結到網頁/qingdao.html,在向伺服器傳送的GET /beijing.html中的請求中,Referer是http://www.6book.net/qingdao.html 。這個屬性可以用來跟蹤Web請求是從什麼網站來的。

22.Upgrage:客戶通過這個屬性設定可以使用與HTTP/1.1不同的協議。

23.User-Agent:是客戶瀏覽器名稱。

24.Via:用來記錄Web請求經過的代理伺服器或Web通道。

25.Warning:用來由客戶宣告傳遞或儲存(cache)錯誤。

相關文章