POST和GET是HTTP請求的兩種方式,均可實現將數據從瀏覽器向服務器發送帶參數的請求。html
HTTP請求底層協議都是TCP/IP,因此二者沒有本質的區別。瀏覽器
HTTP:超文本傳輸協議。全部的WWW文件都必須遵照這個標準。緩存
HTTP向服務器發送請求是TCP鏈接。HTTP服務器收到請求後向客戶端返回一個狀態行 好比「HTTP/1.1 200 OK」和安全
HTTP由四部分組成:服務器
【圖1.1 HTTP請求結構 圖片來自https://www.runoob.com/http/http-messages.html】app
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是獲取的意思,顧名思義就是獲取信息。url
GET是默認的HTTP請求方法。spa
GET方法把參數經過key/value形式存放在URL裏面,若是參數是英文數字原樣顯示,若是是中文或者其餘字符加密(Base64)URL長度通常有限制因此GET方法的參數長度不能太長。因爲參數顯示再地址欄因此不安全,通常須要保密的請求不使用GET。code
POST是郵件的意思,顧名思義就像一封信同樣將參數放在信封裏面傳輸。它用於修改服務器上的數據,通常這些數據是應該保密的,就像信件同樣,信的內容只能收信的人看見。例入當用戶輸入帳號和密碼登陸時帳號和密碼做爲參數經過HTTP請求傳輸到服務器,這時候確定不能用GET方法將帳號密碼直接顯示再URL上,這時候就應該用POST方法保證數據的保密性。
總之,二者之間沒有本質區別,區別就在於數據存儲的位置。各自有適用環境,根據需求選擇合適的方法便可。
GET和POST是最經常使用的HTTP請求方式。還有其餘的請求方式。我沒用過其餘的,我只說我知道的把。之後遇到了再補充。