第2章 簡單的HTTP協議(1) HTTP協議

click –> 帶着問題學習~
HTTP協議用於客戶端與服務端之間的通信。

1. 通過請求和響應的交換完成通信

GET /DVWA/login.php HTTP/1.1
Host: 127.0.0.1
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding: gzip, deflate, sdch, br
Accept-Language: zh-CN,zh;q=0.8
Cookie: security=impossible; PHPSESSID=68dbc8265cf14532ad8eb6a068bdaebc
Connection: close

請求

請求報文的結構

  • 方法名:GET
  • URI:/DVWA/login.php
  • 協議:HTTP/1.1
  • 空行
  • 是可選的頭部(HEADER)
  • 請求實體。(因爲是GET方法所以例子中沒有實體體現)

所以請求的報文由方法名、URI、協議、可選的頭部(HEADER)、請求實體組成的。

請求的意思是:請求某臺HTTP服務器的/DVWA/login.php資源。

HTTP/1.1 200 OK
Date: Sun, 19 Mar 2017 12:52:42 GMT
Server: Apache/2.4.23 (Unix) PHP/5.6.28
X-Powered-By: PHP/5.6.28
Expires: Tue, 23 Jun 2009 12:00:00 GMT
Cache-Control: no-cache, must-revalidate
Pragma: no-cache
Content-Length: 1523
Content-Type: text/html;charset=utf-8
Proxy-Connection: Keep-alive


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

</html>

響應

響應報文的結構

  • 協議:HTTP/1.1
  • 狀態碼(status code):200
  • 簡短的解釋語(reason-reason-phrase):OK
  • 可選的頭部(HEADER):例如(Date:創建響應的日期時間)
  • 空行
  • 響應實體(entity-body)

所以響應報文的結構爲:協議、狀態碼、簡短的解釋語、可選的頭部(HEADER)、響應實體

2. HTTP協議是不保存狀態的協議

  • HTTP是一種不保存狀態的協議即無狀態(stateless)協議。HTTP協議自身不對請求和響應之間的通信狀態進行保存。

  • HTTP協議本身不保存通信狀態是爲了更快的處理大量的事物,確保協議的可伸縮性。

3. 請求URI資源定位

URI資源定位中的兩種表現方式

(1)
GET /DVWA/login.php HTTP/1.1
Host    127.0.0.1

(2)
GET 127.0.0.1/DVWA/login.php HTTP/1.1

如果是直接請求服務器的話,URI用*表示
OPTIONS * HTTP/1.1

4. 告知服務器意圖的HTTP方法

HTTP方法:GET、POST、PUT、DELETE、OPTIONS、HEAD、TRACE、CONNECT

  • GET(獲取資源):用來請求訪問已被URI識別的資源,指定的資源經服務器解析後返回響應的內容。

  • POST(傳輸實體):POST方法用來傳輸實體的主體。

  • HEAD(獲得報文頭部):HEAD方法和GET方法一樣,不過HEAD方法不返回報文主題部分只返回頭部。用於確認URI的有效行及資源更新的日期時間等

  • OPTIONS(詢問支持的方法):用來查詢針對URI指定的資源支持的方法。

  • TRACE(追蹤路徑):讓Web服務器將之前的請求通信換回給客戶端。

  • CONNECT(要求用隧道協議鏈接代理):要求在與代理服務器進行通信時建立隧道實現用隧道協議進行TCP通信。主要使用SSL(Secure Socket Layer 安全套接層)和TLS(Tranport Layer Security 傳輸層安全)把通信內容加密後經網絡隧道傳輸

  • PUT(傳輸文件):請求報文中包含要上傳的文件內容,然後保存到請求URI指定位置的資源

  • DELETE(刪除文件):按請求URI刪除指定資源

    其中PUT、DELETE因爲自身不帶身份驗證機制存在問題,所以一般的Web網站不使用。

POSTMAN抓取的GET方法主體、頭部,HEAD方法主體、頭部,OPTIONS方法頭部

GET-HEADER
GET-HEADER

GET-BODY
GET-BODY

HEAD-HEADER
HEAD-HEADER

HEAD-BODY
HEAD-BODY

OPTIONS-HEADER
OPTIONS-HEADER

5. 持久連接節省流量

HTTP協議的初始版本中每完成一次連接就會斷開一次,這種決策在當時很小的數據量傳輸來說沒有多大問題,但是放在今天使用則會造成大量的流量浪費。爲了解決上述問題,HTTP/1.1和部分HTTP/1.0提出了持久連接HTTP Persistent Connections,也稱爲HTTP keep-alive或者HTTP connection reuse)的方法,持久連接的特點是,只要任意一端沒有提示明確的要斷開的要求,則保持TCP連接狀態

6. 使用Cookie的狀態管理

使用Cookie的狀態管理

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章