理解HTTP訊息頭 (四)

2022-04-15 10:21:10 字數 2365 閱讀 1930

伺服器返回的http訊息也分為訊息頭和訊息體兩部分。前面**的第二篇裡已經介紹了返回訊息中常見返回**的含義。對於非正常的返回**的處理比較簡單,只要照著要求去做就好了,而對於正常的返回**(200),其處理方式就多種多樣了。

content-type是返回訊息中非常重要的內容,它標識出這個返回內容的型別,其值為「主型別/子型別」的格式,例如最常見的就是text/html,它的意思是說返回的內容是文字型別,這個文字又是html格式的。原則上瀏覽器會根據content-type來決定如何顯示返回的訊息體內容。常見的內容型別有:

1

text/html html文字

45 audio/x-mpegurl ***檔案列表,如果安裝了winamp,則可以直接把它當面m3u檔案來開啟

更多的內容型別可以在登錄檔「hkcr\mime\database\content type」下看到。

對於ie6瀏覽器來說,如果content-type中的型別和實際的訊息體型別不一致,那麼它會根據內容中的型別來分析實際應該是什麼型別,對於jpg、gif等常用格式都可以正確的識別出來,而不管content-type中寫的是什麼。

如果content-type中指定的是瀏覽器可以直接開啟的型別,那麼瀏覽器就會直接開啟其內容顯示出來,如果是被關聯到其它應用程式的型別,這時就要查詢登錄檔中關於這種型別的註冊情況,如果是允許直接開啟而不需要詢問的,就會直接調出這個關聯的應用程式來開啟這個檔案,但如果是不允許直接開啟的,就會詢問是否開啟。對於沒有關聯到任何應用程式的型別,ie瀏覽器不知道它該如何開啟,此時ie6就會把它當成xml來嘗試開啟。

server: microsoft-iis/5.1

date: thu, 23 mar 2006 07:54:53 gmt

content-disposition: attachment

cache-control: private

content-type: text/html; charset=utf-8

……response.addheader("content-disposition: attachment; filename=mypage.htm");

返回訊息中的cache用於指定網頁快取。我們經常可以看到這樣的情況,開啟乙個網頁時速度不快,但再次開啟時就會快很多,原因是瀏覽器已經對此頁面進行了快取,那麼在同一瀏覽器視窗中再次開啟此頁時不會重新從伺服器端獲取。網頁的快取是由http訊息頭中的「cache-control」來控制的,常見的取值有private、no-cache、max-age、must-revalidate等,預設為private。其作用根據不同的重新瀏覽方式分為以下幾種情況:

(1) 開啟新視窗

如果指定cache-control的值為private、no-cache、must-revalidate,那麼開啟新視窗訪問時都會重新訪問伺服器。而如果指定了max-age值,那麼在此值內的時間裡就不會重新訪問伺服器,例如:

cache-control: max-age=5

表示當訪問此網頁後的5秒內再次訪問不會去伺服器

(2) 在位址列回車

如果值為private或must-revalidate(和網上說的不一樣),則只有第一次訪問時會訪問伺服器,以後就不再訪問。如果值為no-cache,那麼每次都會訪問。如果值為max-age,則在過期之前不會重複訪問。

(3) 按後退按扭

如果值為private、must-revalidate、max-age,則不會重訪問,而如果為no-cache,則每次都重複訪問

(4) 按重新整理按扭

無論為何值,都會重複訪問

當指定cache-control值為「no-cache」時,訪問此頁面不會在internet臨時文章夾留下頁面備份。

另外,通過指定「expires」值也會影響到快取。例如,指定expires值為乙個早已過去的時間,那麼訪問此網時若重複在位址列按回車,那麼每次都會重複訪問:

expires: fri, 31 dec 1999 16:00:00 gmt

在asp中,可以通過response物件的expires、expiresabsolute屬性控制expires值;通過response物件的cachecontrol屬性控制cache-control的值,例如:

response.expiresabsolute = #2000-1-1# ' 指定絕對的過期時間,這個時間用的是伺服器當地時間,會被自動轉換為gmt時間

response.expires = 20  ' 指定相對的過期時間,以分鐘為單位,表示從當前時間起過多少分鐘過期。

response.cachecontrol = "no-cache"

理解HTTP訊息頭 (四)

伺服器返回的http訊息也分為訊息頭和訊息體兩部分。前面 的第二篇裡已經介紹了返回訊息中常見返回 的含義。對於非正常的返回 的處理比較簡單,只要照著要求去做就好了,而對於正常的返回 200 其處理方式就多種多樣了。content type是返回訊息中非常重要的內容,它標識出這個返回內容的型別,其值為...

理解HTTP訊息頭 2

當我們請求的物件在伺服器上並不存在時,就會給出這個返回 這可能也是最常見的錯誤 了。iis給出的404訊息內容很長,除了訊息頭以外還有乙個完整的說明 為什麼會這樣 的網頁。apache伺服器的404訊息比較簡短,如下 也許你會問,無論是404還是200,都會在訊息體內給出乙個說明網頁,那麼對於客戶端...

http請求訊息頭與響應訊息頭

請求頭 accept 客戶機通過這個頭,告訴伺服器,它支援哪些資料型別 accept charset 客戶機通過這個頭,告訴伺服器,它支援的編碼 accept encoding 客戶機通過這個頭,告訴伺服器,支援哪種資料壓縮格式 accept language 客戶機採用的是哪個語言 host 客戶...