http請求和響應頭格式分析

2021-09-01 10:41:28 字數 3494 閱讀 5452

一. 響應格式:

下面是通過firebug獲取的響應頭資料資訊:

響應頭資訊

原始頭資訊

響應格式主要有響應行,響應頭,響應體組成   。

響應行響應頭:

2. content-length 表示內容長度。只有當瀏覽器使用持久http連線時才需要這個資料。如果你想要利用持久連線的優勢,可以把輸出文件寫入bytearrayoutputstream,完成後檢視其大小,然後把該值放入content-length頭,最後通過bytearraystream.writeto(response.getoutputstream()傳送內容。

3. content-type 表示後面的文件屬於什麼mime型別。servlet預設為text/plain,但通常需要顯式地指定為text/html。由於經常要設定content-type,因此httpservletresponse提供了乙個專用的方法setcontenttype。

4. date 當前的gmt時間。你可以用setdateheader來設定這個頭以避免轉換時間格式的麻煩。

5. expires 應該在什麼時候認為文件已經過期,從而不再快取它。

6. last-modified 文件的最後改動時間。客戶可以通過if-modified-since請求頭提供乙個日期,該請求將被視為乙個條件get,只有改動時間遲於指定時間的文件才會返回,否則返回乙個304(not modified)狀態。last-modified也可用setdateheader方法來設定。

7. location 表示客戶應當到**去提取文件。location通常不是直接設定的,而是通過httpservletresponse的sendredirect方法,該方法同時設定狀態**為302。

8. refresh 表示瀏覽器應該在多少時間之後重新整理文件,以秒計。除了重新整理當前文件之外,你還可以通過setheader("refresh", "5; url=http://host/path")讓瀏覽器讀取指定的頁面。 

注意這種功能通常是通過設定html頁面head區的<meta http-equiv="refresh" content="5;url=http://host/path">實現,這是因為,自動重新整理或重定向對於那些不能使用cgi或servlet的html編寫者十分重要。但是,對於servlet來說,直接設定refresh頭更加方便。

注意refresh的意義是「n秒之後重新整理本頁面或訪問指定頁面」,而不是「每隔n秒重新整理本頁面或訪問指定頁面」。因此,連續重新整理要求每次都傳送乙個refresh頭,而傳送204狀態**則可以阻止瀏覽器繼續重新整理,不管是使用refresh頭還是<meta http-equiv="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伺服器的專門機制來控制受密碼保護頁面的訪問

//根據父節點查出子節點

function loadbyparentcode(kongjian)

;where["level"]=parseint(kongjian.name.charat(0))+1;

where["code"]=kongjian.value;

sendjsonrpcrequest(url, "post", "getlistby",

, null,function(data)

//新增新的option

if(kongjian.value != "")

bindhtmlselect("#"+kongjianname,data,"title","code",null);

}, null);

}

根據上面的ajax**:請求的url是:

其中:obj:catalogdaoimpl 是post的非json引數,在firebug中捕獲到的結果是:

引數:obj    

catalogdaoimpl

而下面是通過urldecoder編碼後的ajax的post引數,在firebug中的捕獲到的資料格式如下:

引數                 

charset

utf-8

jsonrpccontent

%7b%22id%22%3a1%2c%22method%22%3a%22getlistby%22%2c%22params%22%3a%7b%22where%22%3a%7b%22level%22%3a2%2c%22code%22%3a%22840%22%7d%7d%2c%22jsonrpc%22%3a%222.0%22%7d

rnd

0.7714995991861088

其組成url請求的源**是:

charset=utf-8&jsonrpccontent=%257b%2522id%2522%253a1%252c%2522method%2522%253a%2522getlistby%2522%252c%2522params%2522%253a%257b%2522where%2522%253a%257b%2522level%2522%253a2%252c%2522code%2522%253a%2522840%2522%257d%257d%252c%2522jsonrpc%2522%253a%25222.0%2522%257d&rnd=0.7714995991861088

響應請求後的資料報:

二:http請求分析:

請求頭資訊的格式(firebug中抓取):

1. 瀏覽器中輸入url位址。

2. 網頁中的超連結。

3. 後台**中通過response.redirect("http://www/sohu.com")在後台進行重定向。

4. form表單形式提交

前三種方式都是以get方式發起請求。第四種方式可以以get方式發起請求,也可以以post方式發起請求,只需要設定的method屬性即可,預設該屬性值為get.

當客戶端發起乙個http請求到服務端時,會傳輸乙個http請求訊息給服務端,標準的http請求訊息格式如下:

請求行(request-line)——請求行的格式為:請求方式_資源路徑_http版本號(get http/1.1)。

HTTP 請求和響應簡要分析

http 請求訊息 客戶端連上伺服器後,向伺服器請求某個web資源,稱之為客戶端向伺服器傳送乙個http請求 乙個完整的http請求包括如下內容 乙個請求行,若干訊息頭,以及請求正文,其中的一些訊息頭和正文都是可選的,訊息頭和正文內容之間要空行隔開 http 響應訊息 乙個http響應代表伺服器向客...

http請求頭響應頭

今天的內容首先是http協議其中包括請求頭 request 和響應頭 response 請求頭中包含 accept 告訴伺服器,瀏覽器所支援的資料型別 accept charset 告訴伺服器,瀏覽器支援的字符集 accept encoding 告訴伺服器,瀏覽器所支援的資料解壓演算法 accept...

HTTP請求和HTTP響應

客戶端連上伺服器後,向伺服器請求某個web資源,稱之為客戶端向伺服器傳送了乙個http請求,乙個完整 的http請求包括 描述客戶端的請求方式,請求資源名稱,使用的http協議版本號 請求方式get post 預設是get可以更改表單提交方式為post 區別主要在資料傳遞上 get可以在url位址後...