Http協議格式

2021-09-02 16:19:29 字數 3634 閱讀 4354

一、請求報文

包括請求行、請求頭和請求資料,具體格式如下:

請求方法

請求頭:

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...