面試題(一 GET和POST方法的區別

2021-10-07 16:40:35 字數 1654 閱讀 2207

一、http方法

http定義了與伺服器互動的不同方法,最常用的方法有四種put,delete、post,get,即增刪改查。

1. get

2. post

3. delete

刪除資料。可以通過get/post來實現。

4. put

增加、放置資料,可以通過get/post來實現。

二、w3school給出的get和post的差別分類

getpost

後退按鈕/重新整理

無害資料會被重新提交(瀏覽器應該告知使用者資料會被重新提交

書籤可收藏為書籤

不可收藏為書籤

快取能被快取

不能被快取

編碼型別

歷史引數保留在瀏覽器歷史中

不儲存對資料長度的顯示

get 方法向 url 新增資料;url 的長度是受限制的(url 的最大長度是 2048 個字元)

無限制對資料型別的限制

只允許ascii字元

沒有限制,允許二進位制資料

安全性與post相比,get的安全性較差,所傳送的資料是url的一部分

post 比 get 更安全,因為引數不會被儲存在瀏覽器歷史或 web 伺服器日誌中。

可見性資料在 url 中對所有人都是可見的

資料不會顯示在 url 中

三、get和post在報文上的差別

同:get和post只是http協議中兩種請求方式,而http協議是基於tcp/ip的應用層協議,無論get還是post,用的都是同乙個傳輸層協議,所以在傳輸上沒有區別。

異:

抓包體現:

四、常見問題

1. get方法引數寫法是固定的嗎?

在約定中,我們的引數是寫在?後面,用&分割。

解析報文的過程是通過獲取tcp資料,用正則等工具從資料中獲取header和body,從而提取資料,也就是說我們也可以自己約定引數的寫法,只要伺服器能夠解發布來就行了,目前比較流行的一種寫法是:

2. post方法比get方法安全?

3. get方法的長度限制是怎麼回事?

首先說明這一點,http協議沒有body和url的長度限制,對url限制的大多是瀏覽器和伺服器的原因。

伺服器是因為處理長url要消耗比較多的資源,為了效能和安全(防止惡意構造長url來攻擊)考慮,會給url長度加限制。

4. post方法會產生兩個tcp資料報

有些文章當中提到,post會將header和body分開傳送,先傳送header,服務端返回100狀態碼在傳送body。

http協議中沒有明確說明post會產生兩個tcp資料報,而且實際測試chrome發現,header和body不會分開傳送。

所以,header和body分開傳送是部分瀏覽器或框架的請求方法,不屬於post必然行為。

原文參考:

面試題 深入理解get和post

推薦閱讀 微服務還能火多久?首先,我們要明白,get和post本質上都是tcp鏈結,那他們為什麼會不一樣?就好像,在網際網路世界中,http 交通規則 會給不同服務型別的tcp 汽車 貼上不同的標籤 因為標籤不同所以使用方法也不一樣。get是通過url傳遞引數,post則是將資料放置在request...

POST請求與GET請求(面試題)

一 原理區別 http定義了與伺服器互動的不同方法,其中最基本的四種 get,post,put,delete,head,其中get和head被稱為安全方法,因為使用get和head的http請求不會產生什麼動作。不會產生動作意味著get和head的http請求不會在伺服器上產生任何結果。但是安全方法...

面試題11 總結get和post基本區別

1 get引數通過url傳遞,post放在request body中。2 get請求在url中傳遞的引數是有長度限制的,而post沒有。3 get比post更不安全,因為引數直接暴露在url中,所以不能用來傳遞敏感資訊 1 get請求只能進行url編碼,而post支援多種編碼方式 2 get請求會瀏...