HTTP 的GET和POST區別

2021-07-30 21:54:39 字數 4134 閱讀 7914

**:

一般在瀏覽器中輸入**訪問資源都是通過get方式;在form提交中,可以通過method指定提交方式為get或者post,預設為get提交

http定義了與伺服器互動的不同方法,最基本的方法有4種,分別是get,post,put,delete

url全稱是資源描述符,我們可以這樣認 為:乙個url位址,它用於描述乙個網路上的資源,而http中的get,post,put,delete就對應著對這個資源的查 ,改 ,增 ,刪 4個操作。到這裡,大家應該有個大概的了解了,get一般用於獲取/查詢 資源資訊,而post一般用於更新 資源資訊

post/get都是請求伺服器,get是傳送獲取伺服器資料的請求;post是傳送傳遞資料的請求

get是獲取指定url上的資源,是讀操作,重要的一點是不論對某個資源get多少次,它的狀態是不會改變的,在這個意義上,我們說get是安全的(不是 被密碼學或者資料保護意義上的安全)。因為get是安全的,所以get返回的內容可以被瀏覽器,cache伺服器快取起來。

根據http規範,get用於資訊獲取,而且應該是安全的和冪等的。所謂安全的意味著該操作用於獲取資訊而非修改資訊。換句話說,get請求一般不應產生***。就是說,它僅僅是獲取資源資訊,就像資料庫查詢一樣,不會修改,增加資料,不會影響資源的狀態。(注意:這裡安全的含義僅僅是指是非修改資訊。)

post的語意是對指定資源「追加/新增」資料,所以是不安全的,每次提交的post,參與的**都會認為這個操作會修改操作物件資源的狀態,於是,瀏覽器在你按下f5的時候會跳出確認框,快取伺服器不會快取post請求返回內容。

根據http規範,post表示可能修改變伺服器上的資源的請求

兩者區別

(----此處空一行----)

name=professional%20ajax&publisher=wiley

get提交,

請求的資料會附在url之後(就是把資料放置在http協議頭中),以?分割url和傳輸資料,多個引數用&連線;例 如:login.action?name=hyddd&password=idontknow&verify=%e4%bd%a0 %e5%a5%bd。如果資料是英文本母/數字,原樣傳送,如果是空格,轉換為+,如果是中文/其他字元,則直接把字串用base64加密,得出如: %e4%bd%a0%e5%a5%bd,其中%xx中的xx為該符號以16進製表示的ascii。

當使用get的方法時,會將表單資訊附加在url上並作為querystring的一部分,querystring是一種key/value的組合,從問號「?」開始,每一組值都是用「&」隔開.當使用 get方法將資料送到web server時,可以透過瀏覽器的網址看到完整的url和querystring,這是一種不安全的方法,具有高風險性。有心的人可以透過操控 querystring字串的方式來取得或破壞資料庫的資料,另乙個缺點是有長度的限制,當使用ms ie和iis的話,querystring長度不能高過1,024個字元。

post提交:

把提交的資料放置在是http包的包體中。上文示例中紅色字型標明的就是實際的傳輸資料

因此,get提交的資料會在位址列中顯示出來,而post提交,位址列不會改變

post方法是將要傳送的資訊放在message-body中

.使用post方法就不用擔心資料大小的限制,可以防止使用者操作瀏覽器網址,表單的資料被隱藏在message-body中,因此,在大多數的情況下,使用post方法將表單資料傳到web server端是更有效的方法。

post的安全性要比get的安全性高。注意:這裡所說的安全性和上面get提到的「安全」不是同個概念。上面「安全」的含義僅僅是不作資料修改,而這 裡安全的含義是真正的security的含義,比如:通過get提交資料,使用者名稱和密碼將明文出現在url上,因為(1)登入頁面有可能被瀏覽器快取, (2)其他人檢視瀏覽器的歷史紀錄,那麼別人就可以拿到你的賬號和密碼了,除此之外,使用get提交資料還可能會造成cross-site request forgery攻擊

另一篇:

post/get的安全問題:

1),get傳輸的資料是在url裡,post是封裝在form表單裡。由於瀏覽器會快取url,如果url裡包含敏感資料,那麼別的使用者就可從歷史記錄裡輕易的讀取到這些資料。從這方面來分析get方法存在 嚴重的安全性問題。

2),如果從資料傳輸的過程來分析說post比get安全,是錯誤的。因為post,get傳輸資料都是明文傳送。用類似httpfox這樣的外掛程式都可以看到二者傳送的明文資料。

請求引數

get:

請求引數是作為乙個key/value對的序列(查詢字串)附加到url上的查詢字串的長度受到web瀏覽器和web伺服器的限制(如ie最多支援2048個字元),不適合傳輸大型資料集同時,它很不安全。

post:

傳輸資料長度限制

get:特定瀏覽器和伺服器對url長度有限制,例如ie對url長度的限制是2083位元組(2k+35)。對於其他瀏覽器,如netscape、firefox等,理論上沒有長度限制,其限制取決於作業系統的支援。

因此對於get提交時,傳輸資料就會受到url長度的限制。

post:由於不是通過url傳值,理論上資料不受限。但實際各個web伺服器會規定對post提交資料大小進行限制,apache、iis6都有各自的配置。

使用選擇

http標準包含這兩種方法是為了達到不同的目的。post用於建立資源,資源的內容會被編入http請示的內容中。例如,處理訂貨表單、在資料庫中加入新資料行等。

當請求無***時(如進行搜尋),便可使用get方法;當請求有***時(如在資料庫新增資料行),則用post方法。乙個比較實際的問題是:get方法可能會產生很長的url,或許會超過某些瀏覽器與伺服器對url長度的限制。

若符合下列任一情況,則用post方法:

請求的結果有持續性的***,例如,資料庫內新增新的資料行。

若使用get方法,則表單上收集的資料可能讓url過長。

要傳送的資料不是採用7位的ascii編碼。

若符合下列任一情況,則用get方法:

請求是為了查詢資源,html表單資料僅用來幫助搜尋。

請求結果無持續性的***。

收集的資料及html表單內的輸入欄位名稱的總長不超過1024個字元。

表單提交中get和post方式的區別有5點

1. get是從伺服器上獲取資料,post是向伺服器傳送資料。

2. get是把引數資料佇列加到提交表單的action屬性所指的url中,值和表單內各個字段一一對應,在url中可以看到。post是通過http post機制,將表單內各個字段與其內容放置在html header內一起傳送到action屬性所指的url位址。使用者看不到這個過程。

3. 對於get方式,伺服器端用request.querystring獲取變數的值,對於post方式,伺服器端用request.form獲取提交的資料。

4. get傳送的資料量較小,不能大於2kb。post傳送的資料量較大,一般被預設為不受限制。但理論上,iis4中最大量為80kb,iis5中為100kb。

5. get安全性非常低,post安全性較高。

http的get和post的區別

1 get請求,請求的資料會附加在url之後,以?分割url和傳輸資料,多個引數用 連線。url的編碼格式採用的是ascii編碼,而不是uniclde,即是說所有的非ascii字元都要編碼之後再傳輸。post請求 post請求會把請求的資料放置在http請求包的包體中。上面的item bandsaw...

HTTP 方法GET 和 POST區別

兩種最常用的 http 方法是 get 和 post。超文字傳輸協議 http 的設計目的是保證客戶機與伺服器之間的通訊。http 的工作方式是客戶機與伺服器之間的請求 應答協議。web 瀏覽器可能是客戶端,而計算機上的網路應用程式也可能作為伺服器端。舉例 客戶端 瀏覽器 向伺服器提交 http 請...

HTTP中get和post區別

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