更新時間:2023-11-17 來源:黑馬程序員 瀏覽量:
在HTTP的請求消息中,請求方式有GET、POST、HEAD、OPTIONS、DELETE、TRACE、PUT和CONNECT共八種,每種方式都指明了操作服務(wù)器中指定URI資源的方式。然而在實際開發(fā)中,使用最多的請求方式是GET和POST,其說明如表8-1所示。
表8-1 HTTP常用的兩種請求方式
表8-1中列舉了HTTP常用的兩種請求方式,針對這兩種請求方式的詳細(xì)講解如下所示。
當(dāng)用戶在瀏覽器地址欄中直接輸入某個URL地址或者單擊網(wǎng)頁上的某個超鏈接時,瀏覽器將使用GET方式發(fā)送請求。如果將網(wǎng)頁上的form表單的method屬性設(shè)置為GET或者不設(shè)置method屬性(默認(rèn)值是GET),那么當(dāng)用戶提交表單時,瀏覽器也將使用GET方式發(fā)送請求。
如果將瀏覽器請求的URL中有參數(shù)部分,那么在瀏覽器生成的請求消息中,參數(shù)部分將附加在請求行中的資源路徑后面。先來看一個URL地址,具體如下:
name=zhangsan&age=23
在上述URL中,?后面的內(nèi)容為參數(shù)信息。參數(shù)是由參數(shù)名和參數(shù)值組成的,并且在中間使用等號(=)進行連接。需要注意的是,如果URL地址中有多個參數(shù),參數(shù)之間需要用&分隔。
當(dāng)瀏覽器向服務(wù)器發(fā)送請求消息時,上述URL中的參數(shù)部分會附加在需要訪問的URI資源后面,如下所示:
GET/javaForum? name=itcast&age=23 HTTP/1.1
需要注意的是,使用GET方式傳送的數(shù)據(jù)量有限,最多不能超過1KB。
如果將網(wǎng)頁上的form表單的method屬性設(shè)置為POST,那么當(dāng)用戶提交表單時,瀏覽器將使用POST方式提交表單內(nèi)容,并把各個表單元素及數(shù)據(jù)作為HTTP消息的實體內(nèi)容發(fā)送給服務(wù)器,而不是作為URI地址的參數(shù)傳遞。另外,在使用POST方式向服務(wù)器傳遞數(shù)據(jù)時,Content-Type消息頭會自動設(shè)置為application/x-www-form-urlencoded,Content-Length消息頭會自動設(shè)置為實體內(nèi)容的長度,如下所示:
POST /javaForum HTTP/1.1 Host:
對于使用POST方式傳遞的請求消息,服務(wù)器端程序會采用與獲取URI后面參數(shù)相同的方式獲取表單各個字段的數(shù)據(jù)。
在實際開發(fā)中,通常都會使用POST方式發(fā)送請求,其原因主要有兩個。第一,POST傳輸?shù)臄?shù)據(jù)大小無限制。由于GET請求方式是通過請求參數(shù)傳遞數(shù)據(jù)的,因此最多可傳遞1KB的數(shù)據(jù)。而POST請求方式是通過實體內(nèi)容傳遞數(shù)據(jù)的,因此傳遞數(shù)據(jù)的大小無限制。第二,POST比GET請求方式更安全。因為GET請求方式的參數(shù)信息都會在URL地址欄中明文顯示,而POST請求方式傳遞的參數(shù)隱蔽在實體內(nèi)容中,用戶是看不到的,因此,POST比GET請求方式更安全。