1. 程式人生 > >HTTP協議---HTTP請求中的常用請求字段和HTTP的響應狀態碼及響應頭

HTTP協議---HTTP請求中的常用請求字段和HTTP的響應狀態碼及響應頭

length lin div 處理過程 o-c 繼續 意義 span utf

基本 HTTP 協議

打開瀏覽器,輸入服務器 IP,例如 http://192.168.0.3,如果端口號不80,例如是 8000,則輸入 http://192.168.0.3:8000 。這時瀏覽器向服務器發送的 HTTP 協議頭如下:

GET / HTTP/1.1

Host: 192.168.0.3:8000

User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.6) Gecko/20061201

Firefox/2.0.0.6 (Ubuntu-feisty)

Accept:

text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/

png,*/*;q=0.5

Accept-Language: en-us,en;q=0.5

Accept-Encoding: gzip,deflate

Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7

Keep-Alive: 300

Connection: keep-alive

用於HTTP請求中的常用請求頭字段

Accept:用於高速服務器,客戶機支持的數據類型
Accept-Charset:用於告訴服務器,客戶機采用的編碼格式
Accept-Encoding:用於告訴服務器,客戶機支持的數據壓縮格式
Accept-Language:客戶機的語言環境
Host:客戶機通過這個頭高速服務器,想訪問的主機名
If-Modified-Since:客戶機通過這個頭告訴服務器,資源的緩存時間
Referer:客戶機通過這個頭告訴服務器,它是從哪個資源來訪問服務器的(防盜鏈)
User-Agent:客戶機通過這個頭告訴服務器,客戶機的軟件環境
Cookie:客戶機通過這個頭可以向服務器帶數據
Connection:處理完這次請求後是否斷開連接還是繼續保持連接
Date:當前時間值


HTTP響應
狀態行:用於描述服務器對請求的處理結果。

狀態碼:100~199:表示成功接收請求,要求客戶端繼續提交下一次請求才能完成整個處理過程。
200~299:表示成功接收請求並已完成整個處理過程。常用200
300~399:為完成請求,客戶需進一步細化請求。例如:請求的資源已經移動一個新地址、常用302(意味著你請求我,我讓你去找別人),307和304(我不給你這個資源,自己拿緩存)
400~499:客戶端的請求有錯誤,常用404(意味著你請求的資源在web服務器中沒有)403(服務器拒絕訪問,權限不夠)
500~599:服務器端出現錯誤,常用500
多個響應頭:響應頭用於描述服務器的基本信息,以及數據的描述,服務器通過這些數據的描述信息,可以通知客戶端如何處理等一會兒它回送的數據。
Location:這個頭配合302狀態碼使用,用於告訴客戶找誰。
Server:服務器通過這個頭告訴瀏覽器服務器的類型。
Content-Encoding:服務器通過這個頭告訴瀏覽器數據的壓縮格式。
Content-Length:服務器通過這個頭告訴瀏覽器回送數據的長度
Content-Type:服務器通過這個頭告訴瀏覽器回送數據的類型
Last-Modified:告訴瀏覽器當前資源的最後緩存時間
Refresh:告訴瀏覽器隔多久刷新一次
Content-Disposition:告訴瀏覽器以下載方式打開數據
Transfer-Encoding:告訴瀏覽器數據的傳送格式
ETag:緩存相關的頭
········三種禁止瀏覽器緩存的頭字段:
Expires:告訴瀏覽器把回送的資源緩存多長時間 -1或0則是不緩存
Cache-Control:no-cache
Pragma:no-cache
服務器通過以上兩個頭,也就是控制瀏覽器不要緩存數據

實體內容:代表服務器向客戶端回送的數據

l200(正常) 表示一切正常,返回的是正常請求結果。 l302/307(臨時重定向) 指出被請求的文檔已被臨時移動到別處,此文檔的新的URL在Location響應頭中給出。 l304(未修改) 表示客戶機緩存的版本是最新的,客戶機應該繼續使用它。 l403(禁止) 服務器理解客戶端請求,但拒絕處理它。通常由於服務器上文件或目錄的權限設置所致。 l404(找不到) 服務器上不存在客戶機所請求的資源。 l500(內部服務器錯誤) 服務器端的CGI、ASP、JSP等程序發生錯誤。

1.請按自己的理解簡述HTTP 1.1與HTTP 1.0的區別。 2.請描述HTTP請求消息和HTTP響應消息的組成結構,並各舉一例進行說明。 3.瀏覽器分別在哪些情況下使用GET方式和POST方式訪問WEB服務器?如果瀏覽器傳遞給WEB服務器的參數內容超過1K,應該使用那種方式發送請求消息? 4.請描述200、302、304、404和500等響應狀態碼所表示的意義。

5.請列舉三種禁止瀏覽器緩存的頭字段,並寫出相應的設置值。

解答:

1.HTTP1.0對於每個連接都的建立一次連接一次只能傳送一個請求和響應,請求就會關閉,HTTP1.0沒有Host字段;
而HTTP1.1在同一個連接中可以傳送多個請求和響應,多個請求可以重疊和同時進行,HTTP1.1必須有Host字段。

2.請求消息結構:一個請求行、若幹消息頭、以及屍體內容,當中的一些消息頭和實體內容都是可選的,消息頭和實體內容之間要用空行隔開。
響應消息結構:一個狀態行、若幹消息頭、以及屍體內容,當中的一些消息頭和實體內容都是可選的,消息頭和實體內容之間要用空行隔開。
兩者的區別:就是請求消息有請求行,響應消息有狀態行。
GET /mail/aa.html HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
Accept-Language: zh-CN
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)
Accept-Encoding: gzip, deflate
Host: localhost:8080
If-Modified-Since: Wed, 17 Oct 2012 09:35:13 GMT
If-None-Match: W/"62-1350466513174"
Connection: Keep-Alive

HTTP/1.1 304 Not Modified
Server: Apache-Coyote/1.1
ETag: W/"62-1350466513174"
Date: Wed, 17 Oct 2012 09:45:38 GMT

3.數據量不大,因為GET方式數據量限制1K,不帶有保護數據的情況下使用GET方式訪問WEB服務器;數據量大,而且帶有需要保護的數據時使用POST方式訪問WEB服務器。
如果瀏覽器傳送服務器的數據量超過1K,應使用POST方式訪問服務器,因為POST方式向服務器傳送是數據時,會先把傳送的數據打包發送到WEB服務器。

4.響應狀態嗎表示的意義:
200:表示成功,正常結果;
302:表示重定向,轉到別的站點;
304:表示未修改;
404:表示找不到資源;
500:表示內部服務器錯誤;

5.Expires:告訴瀏覽器把回送的資源緩存多長時間 -1或0則是不緩存
Cache-Control:no-cache
Pragma:no-cache

HTTP協議---HTTP請求中的常用請求字段和HTTP的響應狀態碼及響應頭