聊聊 HTTP 常見的請求方式
在網際網路已經滲透了生產、生活各個角落的今天,人們可以登入微信語音聊天,可以隨手“掃”到各種功能的二維碼,可以透過方便快捷的無人超市購物……這種網際網路領域的跨越式發展,不僅滿足了人們生活中各種各樣的需求,也催生了一個個新興領域的誕生,為經濟增長注入了強勁動力。
上網的過程,其實是瀏覽器向服務端傳送請求,之後將服務端主機上的內容顯示到本地的一個流程。而瀏覽器與伺服器之間的請求走的就是 HTTP 協議
自 1990 年以來,超文字傳輸協議(HTTP) 就成為了網際網路資料通訊的基礎,它是分散式協作超媒體資訊系統的應用層協議,是一種通用的無狀態協議。具體來講就是讓伺服器不保留與客戶交易時的任何狀態,由客戶端單方面向伺服器傳送請求資料。
HTTP 主要有 0.9、1.0、1.1、2.0 版本,其中 1.1 版本定義了 9 種 Method(方法),分別是:
這些方法中,最常見的便是 GET 和 POST,但是可能很少有人關注兩者都有什麼作用,我們一起來看一看吧。
GET vs POST Method
GET 和 POST 都是 HTTP 協定的一種請求標準,同樣基於 TCP 傳輸層協議。兩者主要區別在存放資料的方式不同,進而造成的傳輸量、安全性等差異。
提交之後,地址並無變化,但是透過檢視 HTTP Request 的內容可以發現,POST 是將表單資料放在 Message Body 進行傳送。
看不太懂程式碼的小夥伴也不要著急,我們以現實生活中寄信的機制來舉例。如果說信封的撰寫格式是 HTTP,我們可以將信封外的內容稱為 Http-Header,信封內的書信稱為 Message Body。 HTTP Method 就是你要告訴郵差的寄信規則。
而假設 GET 就如同明信片一樣將要傳遞的資訊寫在信封(Http-Header)上,是信封內不裝信件的寄送方式,是直接將要傳送的資訊以 Query String(一種 Key/Vaule 的編碼方式)的形式加在地址(URL)後面進行傳送。那 POST 就是信封內裝有信件的寄送方式,不但信封可以寫東西,信封內(Message Body)還可以放入你想要寄送的其他資料,之後由郵差進行傳送。
GET VS POST
總體來說,兩種請求方式有如下區別:
**- 傳遞引數方式:**GET 是將引數寫在 URL 中 ? 的後面,並用 & 分隔不同引數;而 POST 是將資訊存放在 Message Body 中傳送。
**- 傳輸資料量限制:**HTTP 協定本身沒有限制 URL 及正文長度,多半是瀏覽器為了避免過長的 URL 消耗過多的資源而限制長度;而以 POST 請求通常都沒有內容長度限制的問題。
**- 安全性問題:**GET 請求方式從瀏覽器的 URL 地址就可以看到引數;但無論是 GET 還是 POST 其實都是不安全的,因為 HTTP 協定是明文傳輸,只要攔截封包便能輕易獲取重要資訊。想要安全傳輸資料,必須使用 SSL/TLS來加密封包,也就是 HTTPS。
除了我們較為常見的 GET 和 POST 兩種請求方式,現在其他請求方式也越來越多的被使用。例如又拍雲基於 RESTful 架構的 REST API 中,除了使用 GET 獲取檔案外,也會使用 PUT 來上傳檔案,DELETE 用來刪除檔案,HEAD 用來獲取檔案資訊,使用 PATCH 來修改檔案 Metadata 資訊等等。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69990902/viewspace-2744973/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 說說 HTTP 常見的請求頭有哪些? 作用?HTTP
- mark java發起http請求的方式JavaHTTP
- POSTMAN HTTP請求的四種方式區別PostmanHTTP
- PHP 傳送 HTTP 請求的幾種方式PHPHTTP
- Http請求get與post請求方式的各種相關面試總結HTTP面試
- http請求HTTP
- HTTP 請求HTTP
- CTFHub web前置技能HTTP協議請求方式WebHTTP協議
- 在lua中操作http請求有兩種方式HTTP
- fetch 如何請求常見資料格式
- 淺談HTTP中GET和POST請求方式的區別HTTP
- http請求概述HTTP
- HTTP請求方法HTTP
- http請求頭HTTP
- go http請求GoHTTP
- 中止請求和超時 跨域的HTTP請求 認證方式 JSONP跨域HTTPJSON
- POST 請求的三種常見資料提交格式
- 前端常見的請求資料彙總(GET POST)前端
- HTTP的請求與響應以及使用Chrome的檢視方式HTTPChrome
- HTTP的請求過程HTTP
- golang 的 http 請求池GolangHTTP
- 我知道的HTTP請求HTTP
- 瞭解一下Http常見狀態碼、Http協議的工作特點和原理、Http請求Post與Get的區別HTTP協議
- java 請求HTTP返回json集合,物件處理方式JavaHTTPJSON物件
- [轉載]HTTP四種常見的POST提交資料方式HTTP
- 合併HTTP請求vs並行HTTP請求,到底誰更快?HTTP並行
- 合併HTTP請求 vs 並行HTTP請求,到底誰更快?HTTP並行
- Cookie 與 HTTP請求CookieHTTP
- Jsoup http請求JSHTTP
- Android Http請求AndroidHTTP
- HTTP請求報文HTTP
- 請求方式的分類
- HTTP的請求與響應HTTP
- golang常用的http請求操作GolangHTTP
- 【HTTP】HTTP請求體中的四種格式HTTP
- 從HTTP請求響應迴圈探索Flask的基本工作方式HTTPFlask
- HTTP協議中POST、GET、HEAD、PUT等請求方法以及一些常見錯誤HTTP協議
- 【轉】怎麼用PHP傳送HTTP請求(POST請求、GET請求)?PHPHTTP