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