1. 程式人生 > >HTTP請求中POST與GET的區別

HTTP請求中POST與GET的區別

一、原理區別

一般我們在瀏覽器輸入一個網址訪問網站都是GET請求;再FORM表單中,可以通過設定Method指定提交方式為GET或者POST提交方式,預設為GET提交方式。

HTTP定義了與伺服器互動的不同方法,其中最基本的四種:GET,POST,PUT,DELETE,HEAD,其中GET和HEAD被稱為安全方法,因為使用GET和HEAD的HTTP請求不會產生什麼動作。不會產生動作意味著GET和HEAD的HTTP請求不會在伺服器上產生任何結果。但是安全方法並不是什麼動作都不產生,這裡的安全方法僅僅指不會修改資訊。

根據HTTP規範,POST可能會修改伺服器上的資源的請求。比如CSDN的部落格,使用者提交一篇文章或者一個讀者提交評論是通過POST請求來實現的,因為再提交文章或者評論提交後資源(即某個頁面)不同了,或者說資源被修改了,這些便是“不安全方法”。

二、表現形式區別

搞清楚了兩者的原理區別後,我們來看一下在實際應用中的區別。

首先,我們先看一下HTTP請求的格式:

  1. <method> <request-URL> <version>  
  2. <headers>  
  3. <entity-body>  

在HTTP請求中,奇異行必須是一個請求行,包括請求方法,請求URL,報文所用HTTP版本資訊。緊接著是一個herders小節,可以有零個或一個首部,用來說明伺服器要使用的附加資訊。在首部之後就是一個空行,最後就是報文實體的主體部分,包含一個由任意資料組成的資料塊。但是並不是所有的報文都包含實體的主體部分。

GET請求例項:

  1. GET http://weibo.com/signup/signup.php?inviteCode=2388493434  
  2. Host: weibo.com  
  3. Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8  

POST請求例項:
  1. POST /inventory-check.cgi HTTP/1.1  
  2. Host: www.joes-hardware.com  
  3. Content-Type: text/plain  
  4. Content-length: 18  
  5. item=bandsaw 2647  

接下來看看兩種請求方式的區別:

1、GET請求,請求的資料會附加在URL之後,以?分割URL和傳輸資料,多個引數用&連線。URL的編碼格式採用的是ASCII編碼,而不是uniclde,即是說所有的非ASCII字元都要編碼之後再傳輸。

POST請求:POST請求會把請求的資料放置在HTTP請求包的包體中。上面的item=bandsaw就是實際的傳輸資料。

因此,GET請求的資料會暴露在位址列中,而POST請求則不會。

2、傳輸資料的大小

在HTTP規範中,沒有對URL的長度和傳輸的資料大小進行限制。但是在實際開發過程中,對於GET,特定的瀏覽器和伺服器對URL的長度有限制。因此,在使用GET請求時,傳輸資料會受到URL長度的限制。

對於POST,由於不是URL傳值,理論上是不會受限制的,但是實際上各個伺服器會規定對POST提交資料大小進行限制,Apache、IIS都有各自的配置。

3、安全性

POST的安全性比GET的高。這裡的安全是指真正的安全,而不同於上面GET提到的安全方法中的安全,上面提到的安全僅僅是不修改伺服器的資料。比如,在進行登入操作,通過GET請求,使用者名稱和密碼都會暴露再URL上,因為登入頁面有可能被瀏覽器快取以及其他人檢視瀏覽器的歷史記錄的原因,此時的使用者名稱和密碼就很容易被他人拿到了。除此之外,GET請求提交的資料還可能會造成Cross-site request frogery攻擊

4、HTTP中的GET,POST,SOAP協議都是在HTTP上執行的

三、HTTP響應

HTTP響應報文的格式

  1. <version> <status> <reason-phrase>  
  2. <headers>  
  3. <entity-body>  

status,狀態碼描述了請求過程中發生的情況

reson-phrase 是數字狀態碼的可讀版本

常見的狀態碼以及含義如下:

200 OK 伺服器成功處理請求

301/302 Moved Permanently(重定向)請求的URL已移走。響應報文中應該包含一個Location URL,說明資源現在所處的位置

304 Not Modified(未修改) 客戶的快取資源是最新的,要客戶端使用快取內容

404 Not Found 未找到資源

501 Internal Server Error 伺服器遇到錯誤,使其無法對請求提供服務

HTTP響應示例

HTTP/1.1 200 OK

  1. Content-type: text/plain  
  2. Content-length: 12  
  3. Hello World!  
  1. <pre code_snippet_id="300067" snippet_file_name="blog_20140418_2_9713022" name="code" class="plain"><pre code_snippet_id="300067" snippet_file_name="blog_20140418_2_9713022"></pre>  
  2. <pre></pre>  
  3. <pre></pre>  
  4. <pre></pre>  
  5. <pre></pre>  
  6. <pre></pre>  
  7. <pre></pre>  
  8. <pre></pre>  
  9. </pre>  

相關推薦

JavaWEB HTTP請求POSTGET區別

get 和post方法.在資料傳輸過程中分別對應了HTTP協議中的GET方法和POST方法. 主要區別: GET從服務其獲取資料;POST上傳資料. GET將表單中的資料按照variable=value的形式,新增到action所指向的URL後面.並且兩者使用了"?"連線,個個變

HTTP請求POSTGET區別

一、原理區別 一般我們在瀏覽器輸入一個網址訪問網站都是GET請求;再FORM表單中,可以通過設定Method指定提交方式為GET或者POST提交方式,預設為GET提交方式。 HTTP定義了與伺服器互動的不同方法,其中最基本的四種:GET,POST,PUT,DELETE,HE

淺析HTTPPOSTGET區別並用Python模擬其響應和請求

    最近在幾周在做手遊崩潰資訊收集和上傳,拿到崩潰資訊後,使用的是HTTP的POST方法上傳到公司共用的伺服器的,因此做簡單總結。本文首先簡單介紹了HTTP協議,主要說明了POST方法和GET方法的區別;然後用Python實現了 對POST方法和GET方法的響應;最後用

HTTP協議POSTGET、HEAD、PUT等請求方法以及一些常見錯誤

HTTP請求方法: 常用方法: Get\Post\Head (1)Get方法. 取回請求URL標誌的任何資訊,在瀏覽器的位址列中輸入網址的方式訪問網頁時,瀏覽器採用GET方法向伺服器獲取資源。 (2)Post方法.為請求報文準備資料,即要求被請求伺服器接受附在請求訊息

http請求postget方式的區別

在網上找了post和get請求方式的不同和區別,感覺這個比較好,轉載過來和大家分享! Http定義了與伺服器互動的不同方法,最基本的方法有4種,分別是GET,POST,PUT,DELETE。URL全稱是資源描述符,我們可以這樣認為:一個URL地址,它用於描述一個網路上的

用Python socket實現一個簡單的http伺服器(post get區別)、CGIHTTPServer 簡單應用

#!/usr/bin/env python #coding=utf-8import socketimport re HOST = '' PORT = 8000#Read index.html, put into HTTP response dataindex_content = '''HTTP/1.x 200

HTTP協議及其POSTGET操作差異 & C#如何使用POSTGET

HTTP協議我想任何IT人士都耳熟能詳了,大家都能說出個所以然來。但是如果我問你HTTP協議的請求方法有哪些?POST與GET的差異?GET或POST傳送資料量的大小有限制嗎?HTTP響應的狀態有哪些?以及在C#中你如何使用?如果你不能清楚地回答其中的大部分問題,那麼這篇文章就是為你準備的!大綱如

HTTP請求如何選擇GetPost方式

在應用中最常用的Http請求無非是get和post,get請求可以獲取靜態頁面,也可以把引數放在URL字串後面,傳遞給servlet。post與get的不同之處在於post的引數不是放在URL字串裡面,而是放在http請求的正文內。 一、 對於get方式,伺服器端用Request.QueryString獲取

ajax請求contentTypedataType區別

服務器 ajax 字符串 解析 div script http 使用 自動 contentType: 告訴服務器,我要發什麽類型的數據,默認值: "application/x-www-form-urlencoded"。 dataType:告訴服務器,我要想什麽類型的數據。如

POSTGET區別

POST與GET區別 來源:王練 地址: https://www.oschina.net/news/77354/http-get-post-different GET和POST是HTTP請求的兩種基本方法,要說它們的區別,接觸過

JAVA傳送HTTP請求postget),讀取HTTP響應內容,例項及應用

JDK中提供了一些對無狀態協議請求(HTTP)的支援,下面我就將我所寫的一個小例子(元件)進行描述: 首先讓我們先構建一個請求類(HttpRequester)。 該類封裝了JAVA實現簡單請求的程式碼,如下: import java.io.BufferedReader;

HTTP協議POSTGET、HEAD的區別是什麼?分別在什麼情況下使用?

  HTTP是Web協議集中的重要協議,它是從客戶機/伺服器模型發展起來的。客戶機/伺服器是執行一對相互通訊的程式,客戶與伺服器連線時,首先,向伺服器提出請求,伺服器根據客戶的請求,完成處理並給出響應。瀏覽器就是與Web伺服器產生連線的客戶端程式,它的埠為TCP的80埠,。瀏

HTTP 請求 GetPost 區別

一、原理區別 一般我們在瀏覽器輸入一個網址訪問網站都是GET請求;再FORM表單中,可以通過設定Method指定提交方式為GET或者POST提交方式,預設為GET提交方式。 HTTP定義了與伺服器互動的不同方法,其中最基本的四種:GET,POST,PUT,DELETE,H

面試題 —— HTTP請求get請求和post請求區別以及底層原理

GET和POST是HTTP請求的兩種基本方法,要說它們的區別,接觸過WEB開發的人都能說出一二。 最直觀的區別就是GET把引數包含在URL中,POST通過request body傳遞引數。 你可能自己寫過無數個GET和POST請求,或者已經看過很多權威網站總結出的

HTTP請求getpost的區別是什麽

信息 兩種 緩存 數據 request 取數 安全性 body 數據類型 GET和POST是Http請求中最常用的兩種請求方法 首先介紹GET與POST的差異:   (1)GET請求資源數據,POST向服務器傳遞需要處理的數據   (2)GET傳遞數據大小不超過2kb,PO

AJAX - Http postget區別

安全 ext tex 不同方法 per 信息 行修改 進行 TE HTTP: post 和 get 是 HTTP 協議中的兩種方法。瀏覽器和服務器的交互是通過 HTTP 協議執行的,他的全稱為Hyper Text Transfer Protocol(超文本傳輸協議)。HTT

HTTPpostget傳參的區別

 插一下別的知識:HTTP的請求方式 HTTP一共有8中請求方式:1.OPTIONS    2.HEAD    3.GET    4.POST    5.PUT    6.DELETE  

postget 請求區別

1,GET和POST與資料如何傳遞沒有關係?? post與get 請求是由HTTP協議定義的,那麼使用那個方式與應用層的資料層如何傳輸是沒有互相關係的。 從而,http就沒有要求,post一定要放到請求體裡面,get就一定要放到url裡面。 因為有各種瀏覽器軟體的實現,就變成get用ur

我所理解的postget請求區別

Get和Post一般的區別:  1.post更安全(不會作為url的一部分,不會被快取、儲存在伺服器日誌、以及瀏覽器瀏覽記錄中)  2.post傳送的資料更大(get有url長度限制)   get傳參最大長度的理解誤區  1)總結  (1)http協議並未規定get和pos

HTTP請求GETPOST的分析

近期一位朋友想寫iOS上的應用,打算從微博應用做起,第一步先做一個微部落格戶端出來,然後做一個手機微博應用出來,具體做什麼還不甚清楚,其實是在嘗試中。而我正好在用asio寫網路庫,於是主動提出了承擔web伺服器網路庫的部分,也是為了給我自己封裝的網路庫中增加一個http模組。http大家都不陌生,每天開啟網頁