一、請求報文
包括請求行、請求頭和請求資料,具體格式如下:
請求方法:
請求頭:
accept:瀏覽器可接受的mime型別。
accept-charset:瀏覽器可接受的
字符集。
accept-language:瀏覽器所希望的語言種類,當伺服器能夠提供一種以上的語言版本時要用到。
authorization:授權資訊,通常出現在對伺服器傳送的www-authenticate頭的應答中。
connection:表示是否需要
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型別。
二、響應報文
包括響應行、響應頭和響應資料。具體格式如下:
響應頭:
allow: 伺服器支援哪些請求方法(如get、post等)。
content-encoding:
content-length
:表示內容長度。只有當瀏覽器使用持久http連線時才需要這個資料。如果你想要利用
持久連線
的優勢,可以把輸出文件寫入bytearrayoutputstram,完成後檢視其大小,然後把該值放入content-length頭,最後通過bytearraystream.writeto(response.getoutputstream()傳送內容。
content-type
:表示後面的文件屬於什麼mime型別。servlet預設為text/plain,但通常需要顯式地指定為text/html。由於經常要設定content-type,因此httpservletresponse提供了乙個專用的方法setcontenttype。
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都支援它。
server
:伺服器名字。servlet一般不設定這個值,而是由web伺服器自己設定。
set-cookie
:設定和頁面關聯的cookie。servlet不應使用response.setheader("set-cookie", ...),而是應使用httpservletresponse提供的專用方法addcookie。參見下文有關cookie設定的討論。
www-authenticate
:客戶應該在authorization頭中提供什麼型別的授權資訊?在包含401(unauthorized)狀態行的應答中這個頭是必需的。例如,response.setheader("www-authenticate", "basic realm=\"executives\"")。注意servlet一般不進行這方面的處理,而是讓web伺服器的專門機制來控制受密碼保護頁面的訪問(例如.htaccess)。
狀態碼:
① 1xx:表示伺服器已接收了客戶端請求,客戶端可繼續傳送請求
100 繼續
101 交換協議
② 1xx:表示伺服器已接收了客戶端請求,客戶端可繼續傳送請求
200 ok
201 已建立
202 接收
203 非認證資訊
204 無內容
205 重置內容
206 部分內容
③ 3xx:表示伺服器要求客戶端重定向
300 多路選擇
301 永久轉移
302 暫時轉移
303 參見其它
304 未修改(not modified)
305 使用**
④ 4xx:表示客戶端的請求有非法內容
400 錯誤請求(bad request)
401 未認證
402 需要付費
403 禁止(forbidden)
404 未找到(not found)
405 方法不允許
406 不接受
407 需要**認證
408 請求超時
409 衝突
410 失敗
411 需要長度
412 條件失敗
413 請求實體太大
414 請求uri太長
415 不支援**型別
⑤ 5xx:表示伺服器未能正常處理客戶端的請求而出現意外錯誤
500 伺服器內部錯誤
501 未實現(not implemented)
502 閘道器失敗
504 閘道器超時
505 http版本不支援
Http協議格式
一 請求報文 包括請求行 請求頭和請求資料,具體格式如下 請求方法 請求頭 accept 瀏覽器可接受的mime型別。accept charset 瀏覽器可接受的 字符集。accept language 瀏覽器所希望的語言種類,當伺服器能夠提供一種以上的語言版本時要用到。authorization ...
http協議格式
http 1.0 報文型別有兩種 請求,響應。請求行 request line 請求型別 空格 url r n。請求頭部 headers 0 n個鍵值對的集合。空行 blank line r n 請求體 body 只有post請求的時候才有,否則沒有 get請求的型別的例子 post請求型別的例子 ...
HTTP協議格式
http協議 http請求由三部分組成,分別是 請求行 訊息報頭 請求正文 http 超文字傳輸協議 是乙個基於請求與響應模式的 無狀態的 應用層的協議,常基於tcp的連線方式,http1.1版本中給出一種持續連線的機制,絕大多數的web開發,都是構建在http協議之上的web應用。1 常用的htt...