1. 程式人生 > >http中get、post、head對比

http中get、post、head對比

標準Http協議支援六種請求方法,即:

0,GET

1,HEAD

2,PUT

3,DELETE

4,POST

5,OPTIONS

但其實我們大部分情況下只用到了GET和POST。如果想設計一個符合RESTful規範的web應用程式,則這六種方法都會用到。不過即使暫時不想涉及REST,瞭解這六種方法的本質仍然是很有作用的。大家將會發現,原來web也是很簡潔明瞭的。下面依次說明這六種方法。

0,GET:GET可以說是最常見的了,它本質就是傳送一個請求來取得伺服器上的某一資源。資源通過一組HTTP頭和呈現資料(如HTML文字,或者圖片或者視訊等)返回給客戶端。GET請求中,永遠不會包含呈現資料。

1,HEAD:HEAD和GET本質是一樣的,區別在於HEAD不含有呈現資料,而僅僅是HTTP頭資訊。有的人可能覺得這個方法沒什麼用,其實不是這樣的。想象一個業務情景:欲判斷某個資源是否存在,我們通常使用GET,但這裡用HEAD則意義更加明確。

2,PUT:這個方法比較少見。HTML表單也不支援這個。本質上來講, PUT和POST極為相似,都是向伺服器傳送資料,但它們之間有一個重要區別,PUT通常指定了資源的存放位置,而POST則沒有,POST的資料存放位置由伺服器自己決定。舉個例子:如一個用於提交博文的URL,/addBlog。如果用PUT,則提交的URL會是像這樣的”/addBlog/abc123”,其中abc123就是這個博文的地址。而如果用POST,則這個地址會在提交後由伺服器告知客戶端。目前大部分部落格都是這樣的。顯然,PUT和POST用途是不一樣的。具體用哪個還取決於當前的業務場景。

3,DELETE:刪除某一個資源。基本上這個也很少見,不過還是有一些地方比如amazon的S3雲服務裡面就用的這個方法來刪除資源。

4,POST:向伺服器提交資料。這個方法用途廣泛,幾乎目前所有的提交操作都是靠這個完成。

5,OPTIONS:這個方法很有趣,但極少使用。它用於獲取當前URL所支援的方法。若請求成功,則它會在HTTP頭中包含一個名為“Allow”的頭,值是所支援的方法,如“GET, POST”。

其實還有一個TRACE方法,不過這個基本上不會用到,這裡就不介紹了。以上的六種方法,我們可以跟資料庫的CRUD增刪改查操作對應起來:

CREATE :PUT

READ:GET

UPDATE:POST

DELETE:DELETE

這樣一來就實現了HTTP和資料庫操作(其實不光是資料庫,任何資料如檔案圖表都是這樣)的完美統一,這也是REST的精髓之一。


GET: 請求指定的頁面資訊,並返回實體主體。

HEAD: 只請求頁面的首部。

POST: 請求伺服器接受所指定的文件作為對所標識的URI的新的從屬實體。

PUT: 從客戶端向伺服器傳送的資料取代指定的文件的內容。

DELETE: 請求伺服器刪除指定的頁面。

OPTIONS: 允許客戶端檢視伺服器的效能。

TRACE: 請求伺服器在響應中的實體主體部分返回所得到的內容。

PATCH: 實體中包含一個表,表中說明與該URI所表示的原內容的區別。

MOVE: 請求伺服器將指定的頁面移至另一個網路地址。

COPY: 請求伺服器將指定的頁面拷貝至另一個網路地址。

LINK: 請求伺服器建立連結關係。

UNLINK: 斷開連結關係。

WRAPPED: 允許客戶端傳送經過封裝的請求。

Extension-mothed:在不改動協議的前提下,可增加另外的方法。


最基本的方法是 GET 和 POST。事實上 GET 適用於多數請求,而保留 POST 僅用於更新站點。根據 HTTP 規範,GET 用於資訊獲取,而且應該是 安全的和冪等的。所謂安全的意味著該操作用於獲取資訊而非修改資訊。換句話說,GET 請求一般不應產生副作用。冪等的意味著對同一 URL 的多個請求應該返回同樣的結果。完整的定義並不像看起來那樣嚴格。從根本上講,其目標是當用戶開啟一個連結時,她可以確信從自身的角度來看沒有改變資源。 比如,新聞站點的頭版不斷更新。雖然第二次請求會返回不同的一批新聞,該操作仍然被認為是安全的和冪等的,因為它總是返回當前的新聞。反之亦然。POST 請求就不那麼輕鬆了。POST 表示可能改變伺服器上的資源的請求。仍然以新聞站點為例,讀者對文章的註解應該通過 POST 請求實現,因為在註解提交之後站點已經不同了(比方說文章下面出現一條註解);
  在FORM提交的時候,如果不指定Method,則預設為GET請 求,Form中提交的資料將會附加在url之後,以?分開與url分開。字母數字字元原樣傳送,但空格轉換為“+“號,其它符號轉換為%XX,其中XX為 該符號以16進製表示的ASCII(或ISO Latin-1)值。GET請求請提交的資料放置在HTTP請求協議頭中,而POST提交的資料則放在實體資料中;
  GET方式提交的資料最多隻能有1024位元組,而POST則沒有此限制。

在表單裡使用”post”和”get”有什麼區別:
在Form裡面,可以使用post也可以使用get。它們都是method的合法取值。但是,post和get方法在使用上至少有兩點不同:
1、Get方法通過URL請求來傳遞使用者的輸入。Post方法通過另外的形式。
2、Get方式的提交你需要用Request.QueryString來取得變數的值,而Post方式提交時,你須通過Request.Form來訪問提交的內容,當然兩者都可以使用Request直接獲取。

不過通過get方法提交資料,可能會帶來安全性的問題。比如一個登陸頁面。當通過get方法提交資料時,使用者名稱和密碼將出現在URL上。如果:
1、登陸頁面可以被瀏覽器快取;
1、其他人可以訪問客戶的這臺機器。
那麼,別人即可以從瀏覽器的歷史記錄中,讀取到此客戶的賬號和密碼。所以,在某些情況下,get方法會帶來嚴重的安全性問題。
建議在Form中,建議使用post方法。

如果用HEAD方法請求的話,則伺服器返回的只是請求頁面的首部,而不會返回被請求的文擋,HEAD方法通用於一些搜尋引擎中。

HTTP 方法:GET 對比 POST

兩種最常用的 HTTP 方法是:GET 和 POST。

什麼是 HTTP?

超文字傳輸協議(HTTP)的設計目的是保證客戶機與伺服器之間的通訊。

HTTP 的工作方式是客戶機與伺服器之間的請求-應答協議。

web 瀏覽器可能是客戶端,而計算機上的網路應用程式也可能作為伺服器端。

舉例:客戶端(瀏覽器)向伺服器提交 HTTP 請求;伺服器向客戶端返回響應。響應包含關於請求的狀態資訊以及可能被請求的內容。

兩種 HTTP 請求方法:GET 和 POST

在客戶機和伺服器之間進行請求-響應時,兩種最常被用到的方法是:GET 和 POST。

  • GET - 從指定的資源請求資料。
  • POST - 向指定的資源提交要被處理的資料

GET 方法

請注意,查詢字串(名稱/值對)是在 GET 請求的 URL 中傳送的:

/test/demo_form.asp?name1=value1&name2=value2

有關 GET 請求的其他一些註釋:

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

POST 方法

請注意,查詢字串(名稱/值對)是在 POST 請求的 HTTP 訊息主體中傳送的:

POST /test/demo_form.asp HTTP/1.1
Host: w3schools.com
name1=value1&name2=value2

有關 POST 請求的其他一些註釋:

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

比較 GET 與 POST

下面的表格比較了兩種 HTTP 方法:GET 和 POST。

GET POST
後退按鈕/重新整理 無害 資料會被重新提交(瀏覽器應該告知使用者資料會被重新提交)。
書籤 可收藏為書籤 不可收藏為書籤
快取 能被快取 不能快取
編碼型別 application/x-www-form-urlencoded application/x-www-form-urlencoded 或 multipart/form-data。為二進位制資料使用多重編碼。
歷史 引數保留在瀏覽器歷史中。 引數不會儲存在瀏覽器歷史中。
對資料長度的限制 是的。當傳送資料時,GET 方法向 URL 新增資料;URL 的長度是受限制的(URL 的最大長度是 2048 個字元)。 無限制。
對資料型別的限制 只允許 ASCII 字元。 沒有限制。也允許二進位制資料。
安全性

與 POST 相比,GET 的安全性較差,因為所傳送的資料是 URL 的一部分。

在傳送密碼或其他敏感資訊時絕不要使用 GET !

POST 比 GET 更安全,因為引數不會被儲存在瀏覽器歷史或 web 伺服器日誌中。
可見性 資料在 URL 中對所有人都是可見的。 資料不會顯示在 URL 中。

其他 HTTP 請求方法

下面的表格列出了其他一些 HTTP 請求方法:

方法 描述
HEAD 與 GET 相同,但只返回 HTTP 報頭,不返回文件主體。
PUT 上傳指定的 URI 表示。
DELETE 刪除指定資源。
OPTIONS 返回伺服器支援的 HTTP 方法。
CONNECT 把請求連線轉換到透明的 TCP/IP 通道。

相關推薦

HTTPGETPOST對比

HTTP中GET和POST對比 0x01 摘要 網上有不少文章直接拿出結論即GET比POST快,但是POST比GET安全,卻沒有給出詳細的解釋,我查了一些資料同大家分享下。 0x02 效率 GET操作有快取,可以使多次客戶端相同請求值會對伺服器傳送一個請求。

王立平--HttpGet() 與 Post()的差別?

san gin word-wrap word add spa line 都是 保密 Http協議是基於TCP協議的,而TCP協議是一種有連接。可靠的傳輸協議。假設丟失的話,會重傳。所以這種話,就 不會有數據的丟失了。 而Http協議有三種方法。Get,Pos

99%的人都理解錯了HTTPGETPOST的區別

tex method 無限 ext 一點 size 環境 ans 交通 GET和POST是HTTP請求的兩種基本方法,要說它們的區別,接觸過WEB開發的人都能說出一二。 最直觀的區別就是GET把參數包含在URL中,POST通過request body傳遞參數。

99%的人可能都理解錯了HTTPGETPOST的區別

角色 ref 裏的 們的 接受 遺憾 為什麽 eth ges GET和POST是HTTP請求的兩種基本方法,要說它們的區別,接觸過WEB開發的人都能說出一二。 最直觀的區別就是GET把參數包含在URL中,POST通過request body傳遞參數。 你可能自己寫過無數個G

淺談HTTPGetPost的區別(轉)

     Http定義了與伺服器互動的不同方法,最基本的方法有4種,分別是GET,POST,PUT,DELETE。URL全稱是資源描述符,我們可以這樣認為:一個URL地址,它用於描述一個網路上的資源,而HTTP中的GET,POST,PUT,DELETE就對應著對這個

HTTPGETPOST的區別

Get和Post是HTTP請求的兩種基本方法, GET POST Get引數包含在URL。 Post通過 request body 傳遞引數。 Get在瀏覽器回退時

HTTPGETPOST方法的區別

HTTP請求的方法有很多:GET、POST、HEAD、TRACE、OPTIONS等,但是GET和POST是兩個最常用的方法。 GET是最簡單的一種請求方法,其主要功能是從伺服器端獲取使用者所需資源,並將其作為響應返回給客戶端,需要注意的是:GET方法的作用主要用來獲取伺

Python Django 前後端資料互動 之 HTTP協議下GETPOST的區別 99%的人都理解錯了HTTPGETPOST的區別(轉自知乎)

99%的人都理解錯了HTTP中GET與POST的區別(轉自知乎)   作者:Larry 連結:https://zhuanlan.zhihu.com/p/22536382 來源:知乎 著作權歸作者所有。商業轉載請聯絡作者獲得授

網路程式設計之HTTPGETPOST請求

1 參考自w3schools給出一個“標準答案” GET比POST更不安全,因為引數直接暴露在URL上,所以不能用來傳遞敏感資訊; GET引數通過URL傳遞,POST放在Request body中; GET請求在URL中傳送的引數是有長度限制的,而POST沒有;

【Java】——httpgetpost請求的區別

          GET和POST請求都是http的請求方式,使用者通過不同的http請求方式完成對資源(URL)的操作,GET、POST、PUT、DELETE就是對應著對這個資源的查,該,增,刪四個操作,具體點來講GET一般用於獲取|查詢資源資訊,而POST一般用於更新

淺談HTTPGetPost的區別

Http定義了與伺服器互動的不同方法,最基本的方法有4種,分別是GET,POST,PUT,DELETE。URL全稱是資源描述符,我們可以這樣認為:一個URL地址,它用於描述一個網路上的資源,而HTTP中的GET,POST,PUT,DELETE就對應著對這個資源的查,改,增

淺談HTTPGetPost的區別,轉載

接觸GET/POST已經有段時日了,但對其中區別以及較深度的理解還是模凌兩可,今天在網上查閱相關資料,發現一篇另自己恍然大悟的文章,供自己學習和大家參考。 Http定義了與伺服器互動的不同方法,最基本的方法有4種,分別是GET,POST,PUT,DELETE。URL全稱是

HttpGETPOST的區別

轉載 1: GET請求的資料會附在URL之後(就是把資料放置在HTTP協議頭中),以?分割URL和傳輸資料,引數之間以&相連。 POST把提交的資料則放置在是HTTP包的包體中。 2: GET是通過URL提交資料,那麼GET可提交的資料量就跟URL的長度有直接關係了

淺談HTTPGetPost的區別(轉)

       看面試題題庫看到這個問題,百度搜到了一篇比較好的文章,就轉了過來,以下是原文。 Http定義了與伺服器互動的不同方法,最基本的方法有4種,分別是GET,POST,PUT,DELETE。URL全稱是資源描述符,我們可以這樣認為:一個URL地址,它用於描述一個網路

99%的人都理解錯了HTTPGETPOST的區別(轉自知乎)

替換 混亂 避免 產生 答案 風險 自己的 等等 性能 作者:Larry鏈接:https://zhuanlan.zhihu.com/p/22536382來源:知乎著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請註明出處。 GET和POST是HTTP請求的兩種基本方

你真的瞭解HTTPGETPOST的區別嗎?

最直觀的區別就是GET把引數包含在URL中,POST通過request body傳遞引數。 當你在面試中被問到這個問題,你的內心充滿了自信和喜悅。你輕輕鬆鬆的給出了一個“標準答案”: GET在瀏覽器回退時是無害的,而POST會再次提交請求。 GET產生的URL地址可以被B

【JavaScript】2.HttpGetPost兩種請求方式的差異

Get和Post在面試中一般都會問到,一般的區別: (1)post更安全(不會作為url的一部分,不會被快取、儲存在伺服器日誌、以及瀏覽器瀏覽記錄中) (2)post傳送的資料更大(get有url長度限制) (3)post能傳送更多的資料型別(get只能傳送ASCII字元)

【面試】HTTPgetpost請求的區別

面試時候遇到的一個問題。面試官想聽我說二者有什麼主要區別,二者均作為請求方法,使用場合為什麼不一致,在安全性上為什麼get比post要弱等等。這道題其實多多少少都能說一些,但本著追其根由的想法,回來順手查了查資料,總結如下。如果下次面試的你和我一樣碰到這個問題,

【轉載】淺談HTTPGetPost的區別

Http定義了與伺服器互動的不同方法,最基本的方法有4種,分別是GET,POST,PUT,DELETE。URL全稱是資源描述符,我們可以這樣認為:一個URL地址,它用於描述一個網路上的資源,而HTTP中的GET,POST,PUT,DELETE就對應著對這個資

詳解HTTPGETPOST的區別,不是你看過的標準答案!

防吐槽宣告:本文適合程式設計師新人,自認閱文無數、技術超叼的大神不用看。 GET和POST是HTTP請求的兩種基本方法,要說它們的區別,接觸過WEB開發的人都能說出一二。 最直觀的區別就是GET把引數包含在URL中,POST通過request body傳遞引數。 你