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