詳解HTTP中GET和POST的區別

2021-07-12 01:52:55 字數 2676 閱讀 7784

前言我在《php處理html表單》這篇文章中,說到了處理html表單時用到了get和post方法,那麼,get和post是兩個什麼東西呢?用它們處理表單又有啥區別呢?你不知道,就看這篇文章吧。對你絕對有用,不管你信不信,反正我是信了。

除了get和post這兩種方式以後,還有哪些呢?我接下來就先對http中定義的操作進行總結一下。

http中定義的有哪些?

我們都知道,使用url可以確定乙個資源所在的位置,那麼我們確定這個資源以後,是如何對這個資源進行處理的呢?

http協議定義了客戶端與伺服器互動的不同方法,最基本的方法有4種,分別是get,post,put,delete。url定位了這個資源,而http中的get,post,put,delete就是對應著對這個資源的查,改,增,刪4個操作。到這裡,大家應該有個大概的了解了,get一般用於獲取/查詢資源資訊,而post一般用於更新資源資訊。那麼,除了上面說的四種方法,http還有其它方法麼?其實http中定義了以下幾種請求方法:

現在就對上述的所有方法都介紹一下,增加大家對這些方法的乙個總體認識。

get是最常用的方法,通常用於請求伺服器傳送某個資源。

head方法與get方法的行為很類似,但伺服器在響應中只返回實體的主體部分。這就允許客戶端在未獲取實際資源的情況下,對資源的首部進行檢查,使用head,我們可以更高效的完成以下工作:

在不獲取資源的情況下,了解資源的一些資訊,比如資源型別;

通過檢視響應中的狀態碼,可以確定資源是否存在;

通過檢視首部,測試資源是否被修改。

put方法是讓伺服器用請求的主體部分來建立乙個由所請求的url命名的新文件;如果那個文件存在的話,就用這個主體來代替它。

post方法向伺服器提交資料,比如完成表單資料的提交,將資料提交給伺服器處理。

trace方法會在目的伺服器端發起乙個「回環」診斷,我們都知道,客戶端在發起乙個請求時,這個請求可能要穿過防火牆、**、閘道器、或者其它的一些應用程式。這中間的每個節點都可能會修改原始的http請求,trace方法允許客戶端在最終將請求傳送伺服器時,它變成了什麼樣子。由於有乙個「回環」診斷,在請求最終到達伺服器時,伺服器會彈回一條trace響應,並在響應主體中攜帶它收到的原始請求報文的最終模樣。這樣客戶端就可以檢視http請求報文在傳送的途中,是否被修改過了。

options方法用於獲取當前url所支援的方法。若請求成功,則它會在http頭中包含乙個名為「allow」的頭,值是所支援的方法,如「get, post」。

delete方法就是請求伺服器刪除指定url所對應的資源。但是,客戶端無法保證刪除操作一定會被執行,因為http規範允許伺服器在不通知客戶端的情況下撤銷請求。

上面對http所支援的所有方法大體上進行了介紹,但是在實際開發中,我們使用的更多的是get和post,而且在面試的時候,也經常會問get和post的區別,這裡就著重對get和post的區別進行總結。

我們的誤區

我記得我上大學那會,就問過老師,get和post有啥區別,老師就簡單的告訴我,post比get安全,後來,我才發現,我被老師騙了。那麼,對於get和post我們究竟還有哪些誤區呢?

抓個包看看

我們來抓個包看看,做個試驗:

開啟這個鏈結,去cn.cocos2d-x.org註冊個賬號;

填好註冊資訊;

開啟wireshare進行抓包;

在註冊頁面,提交註冊資訊。

檢視抓包資訊並分析,以下是我抓到的包的一些資訊:

=1看到了嗎?裡面都是我輸入的資訊,具體如下(以上均為測試資料):

username=jellythink

password=e10adc3949ba59abbe56e057f20f883e(md5碼)

repassword=e10adc3949ba59abbe56e057f20f883e

[email protected]

vcode=5gp8(驗證碼)

現在你還覺post安全嗎?關於get方式,我這裡就不再舉例說明了。你也趕緊動手去抓個包看看吧。

最後呢?

最後呢,很多時候,大家都覺的使用get很方便,畢竟使用post要用到form,但是,你要知道,你使用get方法時,瀏覽器可能會快取你的位址等資訊,還會留下歷史記錄,而對於post方法呢,則不會進行快取。以後在開發中,一定要分清楚get和post的使用場合,什麼時候要使用get,什麼時候要使用post,自己做到心中有數。

可能,你在google類似的文章的時候,可能會看到分析post和put區別的文章,這又是一類糾結的東西,更多的時候,我們分析這種東西都是分實際情景,結合設計者的語義去使用,慢慢體會吧。至少我現在也不知道如何準確的區分post和put。當然了,我還是要推薦一位大牛的文章,有時間去拜讀一下吧,《rest當中為什麼要使用http put》。

Http的Get和Post方式詳解

http1.1共定義了八個方法 get請求讀取乙個web頁面 post請求向伺服器傳送資料 put請求儲存乙個web頁面 head請求讀取乙個web頁面的頭部 delete移除web頁面 trace 返 到的請求 options查詢特定選項 connect 保留做將來用 1 get方法用來檢索資源,...

HTTP中get和post區別

記得剛開始學習web技術的時候老師教我們的get和post區別是什麼 1.get用於獲取資料 post用於提交資料 2.get攜帶的資料大小比post少 3.get不安全 post安全 當開始找工作的時候面試官問我這倆的區別的時候我很自信的重複了之前老師講的區別 面試官問 除了get和post還有其...

Http中get和post請求

http定義了與伺服器互動的不同方法,最基本的方法有4種,分別是get,post,put,delete。url全稱是資源描述符,我們可以這樣認為 乙個url位址,它用於描述乙個網路上的資源,而http中的get,post,put,delete就對應著對這個資源的查,改,增,刪4個操作。到這裡,大家應...