1.1、http協議的客戶端與伺服器的互動
http是乙個客戶端和伺服器端請求和應答的標準(tcp )。客戶端是終端使用者,伺服器端是**。通過使用web瀏覽器、網路爬蟲或者其它的工具,客戶端發起乙個到伺服器上指定埠(預設埠 為 80)的http請求。(我們稱這個客戶端)調使用者**(user agent)。應答的伺服器上儲存著(一些)資源,比如html檔案和影象。(我們稱)這個應答伺服器為源伺服器(origin server)。在使用者**和源伺服器中間可能存在多個中間層,比如**,閘道器,或者隧道(tunnel)。儘管tcp/ip 協議是網際網路上最流行的應用,http協議並沒有規定必須使用它和(基於)它支援的層。事實上,http可以在任何其他網際網路協議上,或者在其他網路上實現。http只假定(其下層協議提供)可靠的傳輸,任何能夠提供這種保證的協議都可以被其使用。
通 常,由http客戶端發起乙個請求,建立乙個到伺服器指定埠(預設是80埠)的tcp連線。http伺服器則在那個埠監聽客戶端傳送過來的請求。一 旦收到請求,伺服器(向客戶端)發回乙個狀態行,比如"http/1.1 200 ok",和(響應的)訊息,訊息的訊息體可能是請求的檔案、錯誤訊息、或者其它一些資訊。
http使用tcp而不是udp的原因在於(開啟乙個)乙個網頁必須傳送很多資料,而tcp 協議提供傳輸控制,按順序組織資料,和錯誤糾正。通過http或者https協議請求的資源由統一資源識別符號(uniform resource identifiers,或者,更準確一些,uri)來標識。
客戶端與伺服器端的結構與互動過程可以表示為下面2張圖:
圖2、web客戶端與伺服器端的互動
1.2、http訊息
客戶端與伺服器之間的互動用到了兩種型別的訊息:請求(request)和響應(response)。
http請求的格式為:
圖3、http請求的格式
http響應的格式為:
圖4、http響應的格式
從上面可以看出http的請求和響應訊息的首部均包含可變數量的字段,用乙個空行(blank line )將所有首部字段(header)與訊息主體(body)分隔開來。乙個首部欄位由欄位名和隨後的冒號、乙個空格和字段值組成,欄位名不區分大小寫。
報文頭可分為三類:一類應用於請求,一類應用於響應,還有一類描述主體。有一些報文頭(例如:date)既可用於請求又可用於響應。描述主體的報文頭可以出現在post請求和所有響應報文中。http的首部字段如下圖所示:
圖5、http首部字段
1.3、http請求的方法
http/1.1協議中共定義了八種方法(有時也叫「動作」)來表明request-uri 指定的資源的不同操作方式:
方法名稱是區分大小寫的。當某個請求所針對的資源不支援對應的請求方法的時候,伺服器應當返回狀態碼405(method not allowed);當伺服器不認識或者不支援對應的請求方法的時候,應當返回狀態碼501(not implemented)。
http伺服器至少應該實現get和head方法,其他方法都是可選的。此外,除了上述方法,特定的http伺服器還能夠擴充套件自定義的方法。
1.4、http響應的**
伺服器程式響應的第一行叫狀態行。狀態行以http版本號開始,後面跟著3位數字表示響應**,最後是易讀的響應短語。根據第一位可以把響應分成5類:
圖6、http響應**
2、get與post的差異
1.3中介紹了8種方法,其中get與post最基本和常用了。表單提交中get和post方式的區別歸納如下幾點:
在form提交的時候,如果不指定method,則預設為
get請求(.net預設是post),form中提交的資料將會附加在url之後,以?分開與url分開。字母數字字元原樣傳送,但空格轉換為「+」
號,其它符號轉換為%xx,其中xx為該符號以16進製表示的ascii(或iso latin-1)值。get請求請提交的資料放置在http請求協議頭中,而post提交的資料則放在實體資料中;get方式提交的資料最多只能有2048位元組,而post則沒有此限制。post傳遞的引數在doc裡,也就http協議所傳遞的文字,接受時再解析引數部分。獲得引數。一般用post比較好。post提交資料是隱式的,get是通過在url裡面傳遞的,用來傳遞一些不需要保密的資料,get是通過在url裡傳遞引數,post不是。
另他後面有http的乙個深入keepalive模式:
小記:http協議可以看成是對請求和響應的資料格式都作了規定,(類似介面),具體不同的伺服器可能有不同的實現,但響應的內容格式則必須符合協議規
定。j**a中就是取得response的輸出流,按照setcontenttype,write,flush,close流程把響應內容返回給客戶端。
http協議之get 和 post請求
一 get請求方式 例 請求頭 get servlet paramsservlet?param1 abc m2 xyz http 1.1 是向servlet paramsservlet提交資訊而資訊的內容是param1 abc,param2 xyz。附加的資訊用?後表示。而資訊之間用 符號間隔。特點...
http協議Get和Post的區別
1.get是通過url傳遞表單值,post傳遞的表單值是隱含到http的報文中,url中看不到 2.get請求方式通過url傳遞資料的格式 url中請求的檔名後跟著 多鍵值對,鍵值對之間用 進行分割 url中包含漢字 特殊字元,需要對這些字元進行編碼 3.get傳遞的資料量是有限的,如果傳遞大量的資...
Http協議中的get和post
http中post和get區別,是不是用get的方法用post都能辦到?http定義了與伺服器互動的不同方法,最基本的方法有4種,分別是get,post,put,delete。url全稱是資源描述符,我們可以這樣認為 乙個url位址,它用於描述乙個網路上的資源,而http中的get,post,put...