GET 和 POST 到底有什麼區別?

時間 2021-05-06 02:54:00

1樓:Z J

get請求一般使用者獲取資料,常用於搜尋排序和篩選之類的操作。post請求一般是向伺服器提交要被處理的資料,常用於修改和寫入資料。

get請求和post請求本質上就是TCP鏈結,並無差別。但由於HTTP協議的規定和瀏覽器的/伺服器的限制,導致他們在應用過程中體現出了一些不同。https://

2樓:

據我了解主要區別如下:get請求預設時url請求,所以一般都是自身的請求,而pos請求在請求報文頭里帶有origin引數,也就是表示了post是從乙個地方提交到另乙個地方,這是對語義上的不同的乙個表現形式

3樓:熊貓大俠

滕泰科技面試分享之GET和POST的區別:

get引數通過url傳遞,post放在request body中。

get請求在url中傳遞的引數是有長度限制的,而post沒有。

get比post更不安全,因為引數直接暴露在url中,所以不能用來傳遞敏感資訊。

get請求只能進行url編碼,而post支援多種編碼方式get請求會瀏覽器主動cache,而post支援多種編碼方式。

get請求引數會被完整保留在瀏覽歷史記錄裡,而post中的引數不會被保留。

GET和POST本質上就是TCP鏈結,並無差別。但是由於HTTP的規定和瀏覽器/伺服器的限制,導致他們在應用過程中體現出一些不同。

GET產生乙個TCP資料報;POST產生兩個TCP資料報。

4樓:Apline

對於服務端來說其實區別不大,主要是w3c吧,瀏覽器會跟你你的請求方式,做一些操作,比如提防止重複提交表單之類,你可以理解為就是大家統一定好的乙個玩法,本質上沒有區別。

5樓:「已登出」

post帶過去的資訊:多了個body,語義不同

因為body限制大小和get不一樣,所以可以裝很多東西

get可以帶url引數,post一樣,除了body那部分,其它限制一毛一樣的

6樓:謝然

get傳送的資料:

EOFpost傳送的資料:

[空行]

data

EOF區別在於是否有請求體以及它們在語意和常見用法。

7樓:

沒什麼區別。

很多人不知道GET也是可以帶body的吧。只不過習慣上大家不會去管GET的body罷了。

POST也可以通過URL傳參,乃至body為空,只靠URL和header;這種做法並不少見。

「GET是從伺服器上獲取資料」這也是過時的說法。GraphQL協議就一律用的都是POST,因為需要body來傳遞複雜的查詢語句。

8樓:吶吶啵

幾乎沒有區別,都是客戶端傳送資料給服務端,然後服務端應答資料。

http協議把請求以及應答的資料報分成了兩部分:header和body。get和post都只是header裡的乙個字段值,不同的是post一般附帶有body資料。

應答資料報有header,也可以附帶body,這個根據具體業務決定。

至於瀏覽器,只不過是按他自己的規則去使用http協議而已。比如把你輸入的url作為get請求,把一些表單作為post請求。或者根據js指令碼來做具體的請求。

9樓:Airing

其他大佬的回答都非常專業化,我這邊從自己的使用經驗上總結幾條區別吧,若有不足之處或遺漏之處敬請指出:

GET 請求只能 URL 編碼,而 POST 支援多種編碼方式

GET 請求只接受 ASCII 字元的引數,而 POST 則沒有限制

GET 請求的引數通過 URL 傳送,而 POST 放在 Request Body 中

GET 相對於 POST 更不安全,因為引數直接暴露在 URL 中

GET 請求會被瀏覽器主動快取,而 POST 不會(除非自己手動設定)

GET 請求在 URL 傳參有長度限制,而 POST 則沒有限制

GET 產生的 URL 位址可以被收藏,而 POST 不可以

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

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

10樓:zxccxz

我可不可以這樣理解get與post:把客戶端與服務端看作兩個地點,如北京和上海。從上海拉貨去北京,可以乘火車、汽車。。。

不管乘坐什麼工具,都可以把貨拉到北京,也可以從北京把貨拉回來,區別就在於,坐火車去,拉的貨比較多,安全性比較高,汽車安全性比較低,拉的貨比較少。。。等等,不管用什麼交通工具,只是實現目的的方式不一樣,但是都能達到目的。get與post是不是也只是請求資料的方式不一樣,或者說是獲取資料的工具不一樣,但是都能實現資料請求與傳送的目的?

11樓:wujun

核心的區別只有乙個,那就是協議規定的語義上面的區別,有興趣的可以自行翻閱RFC7231.網上說的那些只是對於協議的通用處理.諸如get有長度限制什麼的都是瀏覽器和伺服器自己做的限制,沒有意義.

GET的語義是請求獲取指定的資源。GET方法是安全、冪等、可快取的(除非有 Cache-ControlHeader的約束),GET方法的報文主體沒有任何語義。

POST的語義是根據請求負荷(報文主體)對指定的資源做出處理,具體的處理方式視資源型別而不同。POST不安全(這裡的不安全值得是對於伺服器上面的資源會進行修改,而不是網路安全上面的不安全),不冪等,(大部分實現)不可快取。

12樓:開心小小喵

GET就是獲取資源,其中的URL是資源位址,其預設含義就是資源定位,因此其中帶有特定資源的標識(ID)是很常見的。

POST的話是向伺服器傳送資源細節,比如某個User的姓名,年齡,男女之類的。其傳送目抵也是乙個URL,一些情況下其URL中也會帶有特定資源的標識。

那麼URL傳送資料和POST傳送資料有什麼區別?

我個人認為,URL傳送的是資源定位性質的資料,POST傳送的是資源細節資料。

那麼是不是可以混用?

我認為,最好別混用,現代瀏覽器會預設URL傳送資源定位,瀏覽器裡輸入部分URL後可能會被瀏覽器記住,加入收藏夾,甚至可能會猜測你的後續行為進行預載入,如果這個預載入觸發了你的一些伺服器端的資源細節操作可能會產生不是你期望的後果。

13樓:

如果我說GET和POST並無區別會不會被罵?

所謂header和body的規定,只是乙個規範,並不影響實際的效果。

只要是客戶端能發,服務端能解就行了。

在ealsticsearch的restful api裡,有大量用get傳送body的例子

14樓:挖礦老司機

GET請求,瀏覽器會把http header和data一併傳送出去,伺服器響應200,返回資料。

POST請求,瀏覽器先傳送header,伺服器響應100,瀏覽器再傳送data,伺服器響應200,返回資料。

15樓:kimmking

GET與POST的區別引數:

r/archive/2010/10/09/1846554.html

blog.csdn.net/kimmking/

article/details/2051169

用途:GET用於從伺服器端獲取資料,包括靜態資源(HTML|JS|CSS|Image等等)、動態資料展示(列表資料、詳情資料等等)。

POST用於向伺服器提交資料,比如增刪改資料,提交乙個表單新建乙個使用者、或修改乙個使用者等。

快取:GET時預設可以復用前面的請求資料作為快取結果返回,此時以完整的URL作為快取資料的KEY。所以有時候為了強制每次請求都是新資料,我們可以在URL後面加上乙個隨機引數Math.

random或時間戳new Date().getTime()、或版本號,比如abc.com?

a=1&rnd=0.123987之類的。這也是目前一些靜態資源後面加乙個很長的版本號的原因,jquery-min.

js?v=13877770表示乙個版本,當頁面引用jquery-min.js?

v=13877771時瀏覽器必然會重新去伺服器請求這個資源。jQuery.ajax方法,如果cache=false,則會在GET請求引數中附加」_=」來禁用快取。

POST一般則不會被這些快取因素影響。

安全性:

預設對於nginx的access log,會自動記錄get或post的完整URL,包括其中帶的引數。

對於POST來說,請求的報文卻不會被記錄,這些對於敏感資料來說,POST更安全一些。

自動化效能測試:

基於上面提到的nginx日誌,可以使用grep GET+日期,awk格式化,然後sort -u去重,從而提取到某天的所有GET請求URL,使用程式模擬登陸,然後請求所有URL即可獲取簡單的效能測試資料,每個請求是否正確,響應時間多少等等。

但是對於POST請求,因為不知道報文,無法這樣簡單處理。可以通過nginx-lua獲取報文輸出到log,這樣格式化會麻煩很多,但不失為乙個辦法。

16樓:噼咔

我覺得先從語義方面進行區分吧,具體請移步阮一峰的RESTful API設計指南裡Http動詞一節。我覺得寫得挺好的。

RESTful API 設計指南

簡單的從語義上來說get是獲取資源,post是新建乙個資源。get是冪等的,post不冪等。

當然RFC標準中還有其他動詞,比如用於更新的put(冪等)、delete等

17樓:榮耀屬於跪拜貓

http協議可不止get和post,還有put或者delete等,參考restful的api設計

但請注意,get和post的設計意圖是什麼。根據http的設計,大家在看到get的時候,都期望這個請求對伺服器沒有修改,看到post的時候,都認為這對伺服器產生了修改。

期望在這裡是重點,因為這遵守了http協議設計的概念完整性,容易被其他人理解。當然,也可以說這有利於安全性等方面,但這比較次要。

你提到傳參方式的不同,某種程度上這確實是乙個區別,但請注意,協議並沒有規定get一定要用url傳引數,也沒有規定post要用請求體傳引數。

實際上倒過來也完全可以,合法,最多語言api裡頭可能是不那樣友好罷了。語言api不少只區分是從url提交的還是從請求體提交的,不管get或者post

而且這不是預設的做法,約定優於特立獨行。

請注意,概念完整性的必要性再強調也不為過。

所以有時候我們不那樣做,實際上並不是不允許那樣做…而是大家都不那樣做罷了

PHP 中的 GET 與 POST 有什麼區別?

modour 網路傳輸協議如http等是一種命令系統,命令系統一般格式是 op opdata http的get,post屬於命令,url,header,body等屬於資料。其區別 1 語義上的不同,即命令的目的是什麼 get 獲取資源 要求安全和冪等 post 修改資源 2 語法上的不同,即opda...

抑鬱和雙相到底有什麼區別?

二哈心理 雙相情感障和抑鬱有很大區別的,抑鬱症患者受抑鬱症困擾時心情不好或不想和任何人溝通,對任何事都不感興趣。雙相障礙患者出現抑鬱症時,還可以通過瘋狂購物 借酒消愁 大聲喊叫等方法解決。 心理諮詢師劉麗萍 遊走在神經病和精神病之間狀態的是躁鬱症,躁鬱症跟抑鬱症相比,躁的時候更躁,鬱的時候更鬱,他們...

帥哥和醜男到底有什麼區別?

小夢尋風誠 我覺得人不自律就會變醜 後天因素佔了很大部分 帥哥醜男,剛生下來的時候都是一樣的可愛,白白胖胖,並沒有多少美醜的區別 越到後面,區別越大 相貌是會改變的!相貌是會改變的!相貌是會改變的!可以變帥也可以變醜 因為長相本來就是身體的一部分,身體有健康,相貌也一樣有健康我覺得美和醜並不是單單看...