GET 和 POST 到底有什麼區別?

GET後退按鈕/刷新無害,POST數據會被重新提交(瀏覽器應該告知用戶數據會被重新提交)。

GET書籤可收藏,POST為書籤不可收藏。

GET能被緩存,POST不能緩存 。

GET編碼類型application/x-www-form-url,POST編碼類型encodedapplication/x-www-form-urlencoded 或 multipart/form-data。為二進制數據使用多重編碼。

GET歷史參數保留在瀏覽器歷史中。POST參數不會保存在瀏覽器歷史中。

GET對數據長度有限制,當發送數據時,GET 方法向 URL 添加數據;URL 的長度是受限制的(URL 的最大長度是 2048 個字符)。POST無限制。

GET只允許 ASCII 字符。POST沒有限制。也允許二進制數據。

與 POST 相比,GET 的安全性較差,因為所發送的數據是 URL 的一部分。在發送密碼或其他敏感信息時絕不要使用 GET !POST 比 GET 更安全,因為參數不會被保存在瀏覽器歷史或 web 服務器日誌中。

GET的數據在 URL 中對所有人都是可見的。POST的數據不會顯示在 URL 中。

GET和POST本質上就是TCP鏈接,並無差別。但是由於HTTP的規定和瀏覽器/服務器的限制,導致他們在應用過程中體現出一些不同。 GET和POST還有一個重大區別,簡單的說:GET產生一個TCP數據包;POST產生兩個TCP數據包。

對於GET方式的請求,瀏覽器會把http header和data一併發送出去,服務器響應200(返回數據); 而對於POST,瀏覽器先發送header,服務器響應100 continue,瀏覽器再發送data,服務器響應200 ok(返回數據)。

.GET請求的數據會附在URL之後,以?分割URL和傳輸數據,參數之間以&相連,

POST把提交的數據則放置在是HTTP包的包體中。

2.GET的長度受限於url的長度,而url的長度限制是特定的瀏覽器和服務器設置的,理論上GET的長度可以無限長。

3.POST是沒有大小限制的,HTTP協議規範也沒有進行大小限制,起限制作用的是服務器的處理程序的處理能力

4.在ASP中,服務端獲取GET請求參數用Request.QueryString,獲取POST請求參數用Request.Form。

5.POST的安全性要比GET的安全性高

application json 與form表單的區別?

瀏覽器默認的提交方式就是表單。首先,Content-Type 被指定為 application/x-www-form-urlencoded,jQuery的Ajax請求默認方式,其次,數據以鍵值對形式?key1=value1&key2=value2的方式發送到服務器

1、post和get的選擇?

私密性的信息請求使用post。

查詢信息和可以想要通過url分享的信息使用get。

get和post的區別主要有以下幾方面:

1、url可見性:

get,參數url可見;

post,url參數不可見

2、數據傳輸上:

get,通過拼接url進行傳遞參數;

post,通過body體傳輸參數

3、緩存性:

get請求是可以緩存的

post請求不可以緩存

4、後退頁面的反應

get請求頁面後退時,不產生影響

post請求頁面後退時,會重新提交請求

5、傳輸數據的大小

get一般傳輸數據大小不超過2k-4k(根據瀏覽器不同,限制不一樣,但相差不大)

post請求傳輸數據的大小根據php.ini 配置文件設定,也可以無限大。

6、安全性

這個也是最不好分析的,原則上post肯定要比get安全,畢竟傳輸參數時url不可見,但也擋不住部分人閒的沒事在那抓包玩。安全性個人覺得是沒多大區別的,防君子不防小人就是這個道理。對傳遞的參數進行加密,其實都一樣。

對參數的數據類型,GET只接受ASCII字符,而POST沒有限制。

GET請求在URL中傳送的參數是有長度限制的,而POST沒有。

GET比POST更不安全,因為參數直接暴露在URL上,所以不能用來傳遞敏感信息。

GET參數通過URL傳遞,POST放在Request body中。

GET請求參數會被完整保留在瀏覽器歷史記錄裡,而POST中的參數不會被保留。

GET請求只能進行url編碼,而POST支持多種編碼方式。

GET請求會被瀏覽器主動cache,而POST不會,除非手動設置。

GET產生的URL地址可以被Bookmark,而POST不可以。

GET在瀏覽器回退時是無害的,而POST會再次提交請求。

GET產生一個TCP數據包;POST產生兩個TCP數據包。

對於GET方式的請求,瀏覽器會把http header和data一併發送出去,服務器響應200(返回數據);

而對於POST,瀏覽器先發送header,服務器響應100 continue,瀏覽器再發送data,服務器響應200 ok(返回數據)。

深入:

GET和POST本質上沒有區別

GET和POST是什麼?HTTP協議中的兩種發送請求的方法。


瀏覽器的GET和POST

這裡特指瀏覽器中

Ajax的HTTP請求,即從HTML和瀏覽器誕生就一直使用的HTTP協議中的GET/POST。瀏覽器用GET請求來獲取一個html頁面/圖片/css/js等資源;用POST來提交一個


分享到:


相關文章: