2.6 請求頭
http最常見的請求頭如下:
accept:瀏覽器可接受的mime型別;
accept-charset:瀏覽器可接受的字符集;
accept-language:瀏覽器所希望的語言種類,當伺服器能夠提供一種以上的語言版本時要用到;
authorization:授權資訊,通常出現在對伺服器傳送的www-authenticate頭的應答中;
content-length:表示請求訊息正文的長度;
cookie:這是最重要的請求頭資訊之一;
host:初始url中的主機和埠;
if-modified-since:只有當所請求的內容在指定的日期之後又經過修改才返回它,否則返回304「not modified」應答;
pragma:指定「no-cache」值表示伺服器必須返回乙個重新整理後的文件,即使它是**伺服器而且已經有了頁面的本地拷貝;
referer:包含乙個url,使用者從該url代表的頁面出發訪問當前請求的頁面。
user-agent:瀏覽器型別,如果servlet返回的內容與瀏覽器型別有關則該值非常有用;
ua-pixels,ua-color,ua-os,ua-cpu:由某些版本的ie瀏覽器所傳送的非標準的請求頭,表示螢幕大小、顏色深度、作業系統和cpu型別。
2.7 響應頭
http最常見的響應頭如下所示:
allow:伺服器支援哪些請求方法(如get、post等);
content-length:表示內容長度。只有當瀏覽器使用持久http連線時才需要這個資料。如果你想要利用持久連線的優勢,可以把輸出文件寫入bytearrayoutputstram,完成後檢視其大小,然後把該值放入content-length頭,最後通過bytearraystream.writeto(response.getoutputstream()傳送內容;
content-type: 表示後面的文件屬於什麼mime型別。servlet預設為text/plain,但通常需要顯式地指定為text/html。由於經常要設定content-type,因此httpservletresponse提供了乙個專用的方法setcontenttyep。 可在web.xml檔案中配置副檔名和mime型別的對應關係;
date:當前的gmt時間。你可以用setdateheader來設定這個頭以避免轉換時間格式的麻煩;
expires:指明應該在什麼時候認為文件已經過期,從而不再快取它。
last-modified:文件的最後改動時間。客戶可以通過if-modified-since請求頭提供乙個日期,該請求將被視為乙個條件get,只有改動時間遲於指定時間的文件才會返回,否則返回乙個304(not modified)狀態。last-modified也可用setdateheader方法來設定;
location:表示客戶應當到**去提取文件。location通常不是直接設定的,而是通過httpservletresponse的sendredirect方法,該方法同時設定狀態**為302;
refresh:表示瀏覽器應該在多少時間之後重新整理文件,以秒計。除了重新整理當前文件之外,你還可以通過setheader("refresh", "5; url=http://host/path")讓瀏覽器讀取指定的頁面。注意這種功能通常是通過設定html頁面head區的 實現,這是因為,自動重新整理或重定向對於那些不能使用cgi或servlet的html編寫者十分重要。但是,對於servlet來說,直接設定refresh頭更加方便。注意refresh的意義是「n秒之後重新整理本頁面或訪問指定頁面」,而不是「每隔n秒重新整理本頁面或訪問指定頁面」。因此,連續重新整理要求每次都傳送乙個refresh頭,而傳送204狀態**則可以阻止瀏覽器繼續重新整理,不管是使用refresh頭還是 。注意refresh頭不屬於http 1.1正式規範的一部分,而是乙個擴充套件,但netscape和ie都支援它。
2.8實體頭
實體頭用坐實體內容的元資訊,描述了實體內容的屬性,包括實體資訊型別,長度,壓縮方法,最後一次修改時間,資料有效性等。
allow:get,post
content-encoding:文件的編碼(encode)方法,例如:gzip,見「2.5 響應頭」;
content-language:內容的語言型別,例如:zh-cn;
content-md5:md5 實體的一種md5摘要,用作校驗和。傳送方和接受方都計算md5摘要,接受方將其計算的值與此頭標中傳遞的值進行比較。eg1:content-md5: 。eg2:dfdfdfdfdfdfdff==;
content-range:隨部分實體一同傳送;標明被插入位元組的低位與高位位元組偏移,也標明此實體的總長度。eg1:content-range: 1001-2000/5000,eg2:bytes 2543-4532/7898
content-type:標明傳送或者接收的實體的mime型別。eg:text/html; charset=gb2312 主型別/子型別;
expires:為0證明不快取;
last-modified:web 伺服器認為物件的最後修改時間,比如檔案的最後修改時間,動態頁面的最後產生時間等等。例如:last-modified:tue, 06 may 2008 02:42:43 gmt.
2.8擴充套件頭
在http訊息中,也可以使用一些再http1.1正式規範裡沒有定義的頭字段,這些頭欄位統稱為自定義的http頭或者擴充套件頭,他們通常被當作是一種實體頭處理。
現在流行的瀏覽器實際上都支援cookie,set-cookie,refresh和content-disposition等幾個常用的擴充套件頭欄位。
refresh:1;url= //過1秒跳轉到指定位置;
content-type:web 伺服器告訴瀏覽器自己響應的物件的型別。
content-disposition:attachment; filename=aaa.zip
深入理解HTTP協議
當今最流行的http協議版本為http 1.1,本文內容均以此版本為準 一 報文 http協議的報文分為兩種,請求報文和響應報文 請求報文由4部分組成 1.起始行 2.請求頭 3.空行 4.請求體 響應報文也由4部分組成 1.起始行 2.響應頭 3.空行 4.響應體 其中起始行都是必須的,其他內容可...
深入理解HTTP協議
http協議 hypertext transfer protocol 超文字傳輸協議,它是web的核心。它由兩部分程式組成 乙個客戶機程式,和乙個伺服器程式,執行在不同的端系統中,通過http報文進行通訊。http協議定義了web客戶機如何向web伺服器請求web頁面,下圖描述了http請求 響應行...
Linux 深入理解HTTP協議
基本概念及作用 首先http協議屬於應用層協議,應用層協議就是我們程式設計師自己定協議,但如果每次都自己定麻煩並且很容易出錯,所以有了一些現成的 http,dns 等,所以大多是直接拿來用就行,而應用層的作用就是雙方達成某種約定,一段按照約定的協議傳送資料,另一端按照約定來解析資料,保證接收資料的一...