通過post方式進行提交資料的原理是什麼

時間 2021-09-05 01:58:42

1樓:匿名使用者

http/1.1 協議規定的 http 請求方法有 options、get、head、post、put、delete、trace、connect 這幾種。其中 post 一般用來向服務端提交資料,本文主要討論 post 提交資料的幾種方式。

我們知道,http 協議是以 ascii 碼傳輸,建立在 tcp/ip 協議之上的應用層規範。規範把 http 請求分為三個部分:狀態行、請求頭、訊息主體。類似於下面這樣:

協議規定 post 提交的資料必須放在訊息主體(entity-body)中,但協議並沒有規定資料必須使用什麼編碼方式。實際上,開發者完全可以自己決定訊息主體的格式,只要最後傳送的 http 請求滿足上面的格式就可以。

但是,資料傳送出去,還要服務端解析成功才有意義。一般服務端語言如 php、python 等,以及它們的 ramework,都內建了自動解析常見資料格式的功能。服務端通常是根據請求頭(headers)中的 content-type

欄位來獲知請求中的訊息主體是用何種方式編碼,再對主體進行解析。所以說到 post 提交資料方案,包含了 content-type

和訊息主體編碼方式兩部分。下面就正式開始介紹它們。

2樓:布爸的成長

post封裝了url-encoded過的資料,在伺服器端cgi程式設計時,通過stdin的標準輸入讀取資料的。

jquery的post提交方式為什麼要序列化,而get提交方式就不用?序列化做了什麼?

3樓:網海1書生

這是因為後臺能夠直接處理的資料格式,是一種經過序列化的鍵值對資料,比如前端要向後臺提交三個引數,分別是a=1,b=2,c=3,那麼後臺接收到的資料就應該是a=1&b=2&c=3(可以看到其實就是每個“鍵值對”之間用&連線)。當我們用get方式提交資料時,引數是直接附加到url後面的,即

***.***這是域名此略.***?a=1&b=2&c=3

可以看到?後面的正是後臺程式能夠直接處理的資料格式,所以get方式提交資料的話,就不需要再對引數進行序列化處理了,直接提交即可。

而當我們用post方式提交時,通常我們提交的資料本身就是一個json物件,比如說像這樣的:

var data = ;

而提交時資料是直接以原始格式儲存在body中而不是以鍵值對的方式附加到url中的,所以後臺程式是無法直接識別的,這時候就需要在提交前先把data轉換為 a=1&b=2&c=3 的格式再提交,這就是序列化。

當然,如果資料是通過表單提交的,那麼不管是post方式還是get,瀏覽器會自動進行序列化,無需前端js再做任何處理。

表單的提交有兩種方式:get和post,這兩種方式的區別是什麼?

4樓:小風愛廚房

1、資料回去方式不同:

get是從伺服器上獲取資料,post是向伺服器傳送資料。

2、使用者看到過程不同:

get是把引數資料佇列加到提交表單的action屬性所指的url中,值和表單內各個欄位一一對應,在url中可以看到。

post是通過httppost機制,將表單內各個欄位與其內容放置在html header內一起傳送到action屬性所指的url地址。使用者看不到這個過程。

3、伺服器端回去方式不同:

對於get方式,伺服器端用request.querystring獲取變數的值。

對於post方式,伺服器端用request.form獲取提交的資料。

4、傳送大小不同:

get傳送的資料量較小,不能大於2kb。

post傳送的資料量較大,一般被預設為不受限制。但理論上,iis4中最大量為80kb,iis5中為100kb。

5、安全性不同:

get安全性非常低。

post安全性較高。

5樓:匿名使用者

一、指代不同

1、get:從指定的資源請求資料。

2、post:向指定的資源提交要被處理的資料

二、規則不同

1、get: 請求可被快取; 請求保留在瀏覽器歷史記錄中; 請求可被收藏為書籤;請求不應在處理敏感資料時使用; 請求有長度限制; 請求只應當用於取回資料。

2、post:請求不會被快取; 請求不會保留在瀏覽器歷史記錄中; 不能被收藏為書籤; 請求對資料長度沒有要求。

三、資料要求不同

1、get:當傳送資料時,get 方法向 url 新增資料;url 的長度是受限制的(url 的最大長度是 2048 個字元)。與 post 相比,get 的安全性較差,因為所傳送的資料是 url 的一部分。

2、post:傳送資料無限制。post 比 get 更安全,因為引數不會被儲存在瀏覽器歷史或 web 伺服器日誌中。

6樓:綠水芙蓉衣

get提交給目標地址後,可以在瀏覽器的位址列看到提交的引數,就是問號後面那串

比如 a.php?id=3&type=1

post提交給目標地址後,瀏覽器位址列裡看不到提交的引數,因而比get方法安全,一般登入時候的密碼等資訊都需要post提交。

另外,get提交的引數有長度限制,post沒有

7樓:

get 將表單資料附加到請求頁面的url地址後面。get方法用來傳送少量資料, url的長度限制在8192個字元以內。如果傳送的資料量太大,資料將被截斷,從而導致意外的處理結果。

post 在http請求中嵌入表單資料。post方法可用來傳送大量資料,而且對於使用者名稱、密碼和信用卡等機密資訊的傳送,post方法比get方法更安全。

PHP向特定URL提交POST資料

不用表單貌似不可以post 資料吧 如果想url連線到別的檔案並且帶引數的話 你可以試試。href a a b b 在那個檔案直接可以呼叫 a,b 剛查的資料用curl函式庫的函式可以模擬post傳參。如何從乙個php檔案向另乙個位址post資料 php調介面都是通過curl來完成的。下面是我專案中...

jquery的post和get如何提交至servlet

jquery.post url,data callback type url 傳送請求位址。data 待傳送 key value 引數。callback 傳送成功時 函式。type 返回內容格式,xml,html,script,json,text,default。post test.php func...

ajax請求的時候get 和post方式的區別

安徽電信網上營業廳 首先看一下get post的區別 1 get是把引數資料佇列加到提交表單的action屬性所指的url中,值和表單內各個欄位一一對應,在url中可以看到。post是通過http post機制,將表單內各個欄位與其內容放置在html header內一起傳送到action屬性所指的u...