POST和GET的區別

POST和GET的區別?

POST和GET是什麼?

  POST和GET是HTTP請求的兩種方式,均可實現將數據從瀏覽器向服務器發送帶參數的請求。html

HTTP請求底層協議都是TCP/IP,因此二者沒有本質的區別。瀏覽器

HTTP

HTTP是什麼

HTTP:超文本傳輸協議。全部的WWW文件都必須遵照這個標準。緩存

HTTP向服務器發送請求是TCP鏈接。HTTP服務器收到請求後向客戶端返回一個狀態行 好比「HTTP/1.1 200 OK」和安全

HTTP請求的組成

HTTP由四部分組成:服務器

  • 請求行(request line):用於說明請求類型、要訪問的資源路徑、HTTP版本號(GET /index.html HTTP/1.1)
  • 請求頭部(header):用於說明服務器要使用的附加信息
  • 一個空行
  • 請求數據(body):任意添加的數據

 

      

【圖1.1 HTTP請求結構 圖片來自https://www.runoob.com/http/http-messages.htmlapp

eg:加密

GET /books/?sex=man&name=Professional HTTP/1.1 
Host: www.wrox.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)
Gecko/20050225 Firefox/1.0.1
Connection: Keep-Alive
這裏是空行

------------------------------------------------------------------------------

POST /index.html HTTP/1.1 請求方法 url 協議/版本號 Host: localhost 主機地址 User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:10.0.2) Gecko/20100101 Firefox/10.0.2 發送請求的應用程序名稱 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: zh-cn,zh;q=0.5 通知服務端能夠發送的語言 Accept-Encoding: gzip, deflate 通知服務端能夠發送的數據壓縮格式 Connection: keep-alive Referer: <a target=_blank href="http://localhost/" style="color: rgb(51, 102, 153); text-decoration: none;">http://localhost/</a> Content-Length:25 Content-Type:application/x-www-form-urlencoded 請求空行 標誌着請求頭結束,請求正文(請求體)的開始 username=aa&password=1234
 

GET方法

  GET是獲取的意思,顧名思義就是獲取信息。url

  GET是默認的HTTP請求方法。spa

  GET方法把參數經過key/value形式存放在URL裏面,若是參數是英文數字原樣顯示,若是是中文或者其餘字符加密(Base64)URL長度通常有限制因此GET方法的參數長度不能太長。因爲參數顯示再地址欄因此不安全,通常須要保密的請求不使用GET。code

POST方法

  POST是郵件的意思,顧名思義就像一封信同樣將參數放在信封裏面傳輸。它用於修改服務器上的數據,通常這些數據是應該保密的,就像信件同樣,信的內容只能收信的人看見。例入當用戶輸入帳號和密碼登陸時帳號和密碼做爲參數經過HTTP請求傳輸到服務器,這時候確定不能用GET方法將帳號密碼直接顯示再URL上,這時候就應該用POST方法保證數據的保密性。

POST和GET的區別

  1. GET提交的數據放在URL中,POST則不會。這是最顯而易見的差異。這點意味着GET更不安全(POST也不安全,由於HTTP是明文傳輸抓包就能獲取數據內容,要想安全還得加密
  2. GET回退瀏覽器無害,POST會再次提交請求(GET方法回退後瀏覽器再緩存中拿結果,POST每次都會建立新資源)
  3. GET提交的數據大小有限制(是由於瀏覽器對URL的長度有限制,GET自己沒有限制),POST沒有
  4. GET能夠被保存爲書籤,POST不能夠。這一點也能感覺到。
  5. GET能被緩存,POST不能
  6. GET只容許ASCII字符,POST沒有限制
  7. GET會保存再瀏覽器歷史記錄中,POST不會。這點也能感覺到。

總之,二者之間沒有本質區別,區別就在於數據存儲的位置。各自有適用環境,根據需求選擇合適的方法便可。

還有哪些HTTP請求方法

GET和POST是最經常使用的HTTP請求方式。還有其餘的請求方式。我沒用過其餘的,我只說我知道的把。之後遇到了再補充。

  • PUT:
  • HEAD
  • DELETE
  • ...
相關文章
相關標籤/搜索