深入理解HTTP協議及原理分析之請求頭6

2021-06-29 05:36:01 字數 2892 閱讀 1069

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 等,所以大多是直接拿來用就行,而應用層的作用就是雙方達成某種約定,一段按照約定的協議傳送資料,另一端按照約定來解析資料,保證接收資料的一...