http協議及Get與post操作的差異

2021-09-26 02:29:40 字數 2650 閱讀 7255

問及http檔案頭裡面有什麼內容,get與post操作的差異及get操作時是否會傳送viewstate的資料?發現自己說不出個所以然來,於是上網找了些資料,寫了下來,以作以後翻閱使用。

一、什麼是http協議?

http是http hypertext transfer protocol的簡寫,即超文字傳輸協議,是網際網路上應用最為廣泛的一種網路協議。是客戶端和伺服器端間請求和應答的標準。客戶端是終端使用者,伺服器端是**。通過使用web瀏覽器或者其它的工具,客戶端發起乙個到伺服器上指定埠(預設埠為80)的http請求。(我們稱這個客戶端)調使用者**(user agent)。應答的伺服器上儲存著(一些)資源,比如html檔案和影象。(我們稱)這個應答伺服器為源伺服器(origin server)。在使用者**和源伺服器中間可能存在多個中間層,比如**,閘道器,或者隧道(tunnel)。儘管tcp/ip協議是網際網路上最流行的應用,http協議並沒有規定必須使用它和(基於)它支援的層。事實上,http可以在任何其他網際網路協議上,或者在其他網路上實現。http只假定(其下層協議提供)可靠的傳輸,任何能夠提供這種保證的協議都可以被其使用。

通常,由http客戶端發起乙個請求,建立乙個到伺服器指定埠(預設是80埠)的tcp連線。http伺服器則在那個埠監聽客戶端傳送過來的請求。一旦收到請求,伺服器(向客戶端)發回乙個狀態行,比如"http/1.1 200 ok",和(響應的)訊息,訊息的訊息體可能是請求的檔案、錯誤訊息、或者其它一些資訊。

二、http訊息

通常http訊息包括客戶機向伺服器的請求訊息和伺服器向客戶機的響應訊息。這兩種型別的訊息都是由乙個起始行,乙個或者多個頭域,乙個只是頭域結束的空行和可選的訊息體組成。http的頭域包括通用頭,請求頭,響應頭和實體頭四個部分。每個頭域由乙個網域名稱,冒號(:)和域值三部分組成。網域名稱是大小寫無關的。

請求訊息起始行的格式:method request-uri http-version

method 表示對於request-uri完成的方法,這個欄位是大小寫敏感的,包括options、get、head、post、put、delete、 trace。方法get和head應該被所有的通用web伺服器支援,其他所有方法的實現是可選的。get方法取回由request-uri標識的資訊。 head方法也是取回由request-uri標識的資訊,只是可以在響應時,不返回訊息體。post方法可以請求伺服器接收包含在請求中的實體資訊,可以用於提交表單,向新聞組、bbs、郵件群組和資料庫傳送訊息。

request-uri遵循uri格式,在此字段為星號(*)時,說明請求並不用於某個特定的資源位址,而是用於伺服器本身。

http- version表示支援的http版本。

響應訊息起始行的格式:http-version status-code reason-phrase

http-version表示支援的http版本,例如為http/1.1。

status- code是乙個三個數字的結果**,主要用於機器自動識別。第乙個數字定義響應的類別,可能取5個不同的值,後兩個數字沒有分類的作用。

1xx:資訊響應類,表示接收到請求並且繼續處理。

2xx:處理成功響應類,表示動作被成功接收、理解和接受。

3xx:重定向響應類,為了完成指定的動作,必須接受進一步處理。

4xx:客戶端錯誤,客戶請求包含語法錯誤或者是不能正確執行。

5xx:服務端錯誤,伺服器不能正確執行乙個正確的請求。

其他的內容這裡就不介紹了,請檢視 http檔案頭詳解

reason-phrase給status-code提供乙個簡單的文字描述,主要用於幫助使用者理解。

下面是一對請求和響應訊息:

三、get與post操作的差異

1. 提交資料存放位置:get請求請提交的資料放置在http請求協議頭中,而post提交的資料則放在實體資料中。

2. 傳送資料量大小:get傳送的資料量較小,不能大於2kb(這主要是因為受url長度限制)。post傳送的資料量較大,一般被預設為不受限制。

3. 安全性:get安全性較低,post安全性較高。因為get在傳輸過程,資料被放在請求的url中,而如今現有的很多伺服器、**伺服器或者使用者**都會將請求url記錄到日誌檔案中,然後放在某個地方,這樣就可能會有一些隱私的資訊被第三方看到。另外,使用者也可以在瀏覽器上直接看到提交的資料,一些系統內部訊息將會一同顯示在使用者面前。post的所有操作對使用者來說都是不可見的。

上面的2,3點差異其實就是1的延伸,因此get與post操作差異的根本是提交資料存放位置。

四、提交了那些資料

下面是post操作時提交資料:

下面是get操作時提交資料:

可以發現get與post提交的資料時一模一樣的。除了控制項的資料外,還有__eventvalidation和__viewstate兩個欄位的資料。因此,get操作時會提交viewstate的資料。

http協議及Get與post操作的差異

問及http檔案頭裡面有什麼內容,get與post操作的差異及get操作時是否會傳送viewstate的資料?發現自己說不出個所以然來,於是上網找了些資料,寫了下來,以作以後翻閱使用。一 什麼是http協議?http是http hypertext transfer protocol的簡寫,即超文字傳...

HTTP協議中Get與Post請求

前言 這一段時間又了解到了一些自己之前沒有接觸過的東西,感覺挺容易混淆的,於是在學習完之後,就對其就行了總結 區分!分享 首先,http協議中包含了四種提交方式 get,post,delete,和put get和post是最常見的兩種。1 如果表單是以get方式將資料傳送到服務端,那麼會將使用者在表...

http協議及get和post的區別

1.1 http協議的客戶端與伺服器的互動 http是乙個客戶端和伺服器端請求和應答的標準 tcp 客戶端是終端使用者,伺服器端是 通過使用web瀏覽器 網路爬蟲或者其它的工具,客戶端發起乙個到伺服器上指定埠 預設埠 為 80 的http請求。我們稱這個客戶端 調使用者 user agent 應答的...