HTTP請求與HTTP響應

2022-09-20 00:36:17 字數 4484 閱讀 8082

http請求與http響應

一、http請求

http請求資訊又三部分組成:

下面是乙個http請求的資料:

1、請求行

以回車為結尾,以空格分隔。「post」是請求方法。」 」是url,」 http/1.1」是協議版本

http請求方法:

get請求獲取由request-uri所標識的資源

post

在request-uri所標識的資源後附加新的資料

head

請求獲取由request-uri所標識的資源的響應訊息報頭

options

請求查詢伺服器的效能,或查詢與資源相關的選項和需求

put請求伺服器儲存乙個資源,並用request-uri作為其標識

delete

請求伺服器刪除由request-uri所標識的資源

trace

請求伺服器回送收到的請求資訊,主要用語測試或診斷

其中get和post是最常用的的請求方法。

·get用於獲取資料,就是只獲取伺服器的資源,而post用於提交資料,使得伺服器的資料更新。

·get查詢字串(名稱/值對)實在get請求的url中傳送的,post查詢字串是在post請求的http訊息主體中傳送的

get

post

後退按鈕/重新整理

無害資料會被重新提交(瀏覽器應該告知使用者資料會被重新提交)。 書籤

可收藏為書籤

不可收藏為書籤 快取

能被快取

不能快取

編碼型別

或 multipart/form-data。為二進位制資料使用多重編碼。 歷史

引數保留在瀏覽器歷史中。

引數不會儲存在瀏覽器歷史中。

對資料長度的限制

是的。當傳送資料時,get 方法向 url 新增資料;url 的長度是受限制的(url 的最大長度是 2048 個字元)。

無限制。

對資料型別的限制

只允許 ascii 字元。

沒有限制。也允許二進位制資料。

安全性與 post 相比,get 的安全性較差,因為所傳送的資料是 url 的一部分。

在傳送密碼或其他敏感資訊時絕不要使用 get !

post 比 get 更安全,因為引數不會被儲存在瀏覽器歷史或 web 伺服器日誌中。

可見性資料在 url 中對所有人都是可見的。

資料不會顯示在 url 中。

2、請求頭

user-agent: dgrouppatient/1.052701.230/dalvik/2.1.0(linux;

u; android 5.1.1; kiw-al10 build/honorkiw-al10) //使用者傳送請求的客戶端環境

host: xg.mediportal.com.cn   //請求資源的internet主機和埠號

connection: keep-alive     //持久鏈結

accept-encoding: gzip    //瀏覽器能解碼的資料格式

content-length: 33    //請求正文的長度

3、請求正文

telephone=15527177736&usertype=1&

請求頭與請求正文鍵是乙個空行,這個行非常重要,表示請求頭已經結束,接下來是請求正文,請求正文中可以包含客戶端提交的查詢字串資訊。

二、http響應

與http請求類似,也由三部分構成:

下面是乙個響應例子

1、 狀態行

協議版本、數字形式的狀態碼、響應的狀態描述三部分構成。

·1xx   指示資訊--請求已接收,繼續處理

·2xx    成功--請求已被成功接收

·3xx    重定向—要完成請求必須進行重定向操作

·4xx   客戶端錯誤—請求有語法錯誤或請求無法實現

·5xx    服務端錯誤—伺服器未能實現合法請求

關於狀態碼,在另一篇文章裡已經講過,此處就不展開細講。

2、 響應頭

響應頭可能包括以下: 

·location

響應報頭域用於重定向接受者到乙個新的位置。例如:客戶端所請求的頁面已不存在原先的位置,為了讓客戶端重定向到這個頁面新的位置,服務 器端可以發回location響應報頭後使用重定向語句,讓客戶端去訪問新的網域名稱所對應的伺服器上的資源。當我們在jsp中使用重定向語句的時候,伺服器 端向客戶端發回的響應報頭中,就會有location響應報頭域。  

·server

響應報頭域包含了伺服器用來處理請求的軟體資訊。它和user-agent請求報頭域是相對應的,前者傳送伺服器端軟體的資訊,後者傳送客戶 端軟體(瀏覽器)和作業系統的資訊。下面是server響應報頭域的乙個例子:server: apache-coyote/1.1

·www-authenticate

響應報頭域必須被包含在401(未授權的)響應訊息中,這個報頭域和前面講到的authorization請求報頭域是 相關的,當客戶端收到401響應訊息,就要決定是否請求伺服器對其進行驗證。如果要求伺服器對其進行驗證,就可以傳送乙個包含了 authorization報頭域的請求,下面是www-authenticate響應報頭域的乙個例子:www-authenticate: basic realm="basic auth

test!"

從這個響應報頭域,可以知道伺服器端對我們所請求的資源採用的是基本驗證機制。

·content-encoding

實體報頭域被使用作**型別的修飾符,它的值指示了已經被應用到實體正文的附加內容編碼,因而要獲得content- type報頭域中所引用的**型別,必須採用相應的解碼機制。content-encoding主要用語記錄文件的壓縮方法,下面是它的乙個例子: content-encoding: gzip。如果乙個實體正文採用了編碼方式儲存,在使用之前就必須進行解碼。

·content-language

實體報頭域描述了資源所用的自然語言。content-language允許使用者遵照自身的首選語言來識別和區分實體。 如果這個實體內容僅僅打算提供給丹麥的閱讀者,那麼可以按照如下的方式設定這個實體報頭域:content-language: da。

如果沒有指定content-language報頭域,那麼實體內容將提供給所以語言的閱讀者。

·content-length

實體報頭域用於指明正文的長度,以位元組方式儲存的十進位制數字來表示,也就是乙個數字字元佔乙個位元組,用其對應的ascii碼儲存傳輸。

要注意的是:這個長度僅僅是表示實體正文的長度,沒有包括實體報頭的長度。

·content-type

實體報頭域用語指明傳送給接收者的實體正文的**型別。例如:

content-type:

text/html;charset=iso-8859-1

content-type: text/html;charset=gb2312

· last-modified

實體報頭域用於指示資源最後的修改日期及時間。

·expires

實體報頭域給出響應過期的日期和時間。通常,**伺服器或瀏覽器會快取一些頁面。當使用者再次訪問這些頁面時,直接從快取中載入並顯示給用 戶,這樣縮短了響應的時間,減少伺服器的負載。為了讓**伺服器或瀏覽器在一段時間後更新頁面,我們可以使用expires實體報頭域指定頁面過期的時 間。當使用者又一次訪問頁面時,如果expires報頭域給出的日期和時間比date普通報頭域給出的日期和時間要早(或相同),那麼**伺服器或瀏覽器就 不會再使用快取的頁面而是從伺服器上請求更新的頁面。不過要注意,即使頁面過期了,也並不意味著伺服器上的原始資源在此時間之前或之後發生了改變。

expires實體報頭域使用的日期和時間必須是rfc 1123中的日期格式,例如:

expires:

thu, 15 sep 2005 16:00:00 gmt

http1.1的客戶端和快取必須將其他非法的日期格式(也包括0)看作已過期。例如,為了讓瀏覽器不要快取頁面,我們也可以利用expires實體報頭 域,設定它的值為0,如下(jsp):response.setdateheader("expires",0);

HTTP請求與響應

乙個http請求一般由4部分組成 1.http請求的方法或動作,比如是get還是post請求 2.正在請求的url 3.請求頭,包含一些客戶端環境資訊,身份驗證資訊等等 4.請求體,也就是請求正文,請求正文中可以包含客戶提交的查詢字串資訊,表單資訊等等 注 一般請求頭和請求體之間空一行 get 一般...

HTTP請求與響應

1.客戶端和伺服器建立連線,客戶端發出請求,伺服器進行三次握手身份確認 2.伺服器接收到請求,linux核心根據 客戶端的請求 socket程序通訊管道發給http程序去解析 apache nginx 3.http伺服器開始處理請求,對使用者的請求報文進行解析,明確客戶端需要的資源和請求方式等等 4...

http請求與響應

一 用http寫服務類 30 人員修改介面,當使用者修改資訊時,呼叫此介面,同步使用者資訊表 68 system.out.println 呼叫修改賬戶的介面,客戶請求引數result result 79if flag else 8889 返回值 90 printwriter out response...