計算機網絡4:Http協議

HTTP

1.基本概念

1.1.1 URI

URI包含URL和URN

計算機網絡4:Http協議

2. 請求和響應報文

2.1.請求報文

計算機網絡4:Http協議

計算機網絡4:Http協議

=GET和POST請求的實例=

GET /search/users?q=JakeWharton HTTP/1.1        ---請求行
-----以下都是請求頭
Host: api.github.com          
Connection: keep-alive 指定與連接相關的屬性,例如(Keep_Alive,長連接)  
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64)   AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36 發送請求的應用名稱
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
Accept-Encoding: gzip, deflate, br通知服務器端可以發送的數據壓縮格式
Accept-Language: zh-CN,zh;q=0.9通知服務器端可以發送的語言  
Cookie: _octo=GH1.1.1623908978.1549006668; _ga=GA1.2.548087391.1549006688; logged_in=yes; dotcom_user=GoMarck; _gid=GA1.2.17634150.1554639136; _gat=1
POST / 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
Content-Type: application/x-www-form-urlencode  d
Content-Length: 40
Connection: Keep-Alive ----以上是請求頭
                        ----空行
name=Professional%20Ajax&publisher=Wiley--請求數據(正文)

2.2.響應報文

計算機網絡4:Http協議

3.HTTP報文實現細節

3.1響應頭主要字段

計算機網絡4:Http協議

3.2HTTP狀態碼

計算機網絡4:Http協議

計算機網絡4:Http協議
計算機網絡4:Http協議

  • 1xx 服務器收到請求 ,需要請求者繼續執行操作

    100 Continue:表明到目前爲止都很正常,客戶端可以繼續發送請求或者忽略這個響應
  • 2xx

    200 OK 
    204 No Content :請求已經成功處理,但是返回的響應報文不包含實體的主體部分。一般在只需要從客戶端 往服務器發送信息,而不需要返回數據時使用。 
    206 Partial Content :表示客戶端進行了範圍請求,響應報文包含由 Content-Range 指定範圍的實體內容。

    3xx 重定向

    301 Moved Permanently :永久性重定向 資源(網頁等)被永久轉移到其它URL 
    302 Found :臨時性重定向 資源臨時移動  
    303 See Other :和 302 有着相同的功能,但是 303 明確要求客戶端應該採用 GET 方法獲取資源。 注:雖然 HTTP 協議規定 301、302 狀態下重定向時不允許把 POST 方法改成 GET 方法,但是大多數瀏覽器都 會在 301、302 和 303 狀態下的重定向把 POST 方法改成 GET 方法。 
    304 Not Modified :如果請求報文首部包含一些條件,例如:If-Match,If-Modified-Since,If-NoneMatch,If-Range,If-Unmodified-Since,如果不滿足條件,則服務器會返回 304 狀態碼。 
    307 Temporary Redirect :臨時重定向,與 302 的含義類似,但是 307 要求瀏覽器不會把重定向請求的 POST 方法改成 GET 方法。資源已經重新分配  
  • 4xx 客戶端請求錯誤:

    400 Bad Request :請求報文中存在語法錯誤
    401 Unauthorized :該狀態碼錶示發送的請求需要有認證信息(BASIC 認證、DIGEST 認證)。如果之前已進 行過一次請求,則表示用戶認證失敗。 
    403 forbidden請求資源被拒絕,通常原因是服務器上某些文件或目錄設置了權限,客戶端權限不夠        
    404 not found、找不到請求資源,用戶輸入錯誤的鏈接,該鏈接指向的網頁不存在;除此之外,也可以在服務器端拒絕請求且不想說明理由時使用。
  • 5xx 服務器錯誤:

    500 internal server error服務器故障,服務器內部錯誤(比如瀏覽器代理除了問題,ip,端口不對等)該狀態碼錶明服務器端在執行請求時發生了錯誤。也有可能是Web應用存在的bug或某些臨時的故障
    502,Bad Gateway,作爲網關或者代理工作的服務器嘗試執行請求時,從遠程服務器接收到了一個無效的響應  
    503,服務器超載或停機維護  
    504,Gateway Timeout網關超時 服務器作爲網關或代理,未及時從上游服務器接收請求。
    505 HTTP Version Not Supported

3.3 HTTP方法

3.3.1 GET方法

當前網絡請求中,絕大部分使用的是 GET 方法。

作用:獲取資源

3.3.2 HEAD

和 GET 方法類似,但是不返回報文實體主體部分。 主要用於確認 URL 的有效性以及資源更新的日期時間等。

作用:獲取報文首部

3.3.3 POST

POST 主要用來傳輸數據,而 GET 主要用來獲取資源

作用:傳輸實體主體

3.3.4 PUT

由於自身不帶驗證機制,任何人都可以上傳文件,因此存在安全性問題,一般不使用該方法。

作用:上傳文件
PUT /new.html HTTP/1.1
Host: example.com 
Content-type: text/html Content-length: 16
<p>New File</p>

3.3.5 PATCH

PUT 也可以用於修改資源,但是隻能完全替代原始資源,PATCH 允許部分修改。

作用:對資源進行部分修改
PATCH /file.txt HTTP/1.1
Host: www.example.com 
Content-Type: application/example If-Match: "e0023aa4e" 
Content-Length: 100
[description of changes]

3.3.6 DELETE

與 PUT 功能相反,並且同樣不帶驗證機制。

作用:刪除文件
DELETE /file.html HTTP/1.1

3.3.7 OPTIONS

查詢指定的 URL 能夠支持的方法。
會返回 Allow: GET, POST, HEAD, OPTIONS 這樣的內容。

作用:查詢支持的方法

3.3.8 CONNECT

作用:要求在與代理服務器通信時建立隧道

使用 SSL(Secure Sockets Layer,安全套接層)和 TLS(Transport Layer Security,傳輸層安全)協議把通信內容 加密後經網絡隧道傳輸

3.4 HTTP首部(頭部)

有 4 種類型的首部字段:通用首部字段、請求首部字段、響應首部字段和實體首部字段。

1.通用首部字段

計算機網絡4:Http協議

2.請求首部字段

計算機網絡4:Http協議

3.響應首部字段

計算機網絡4:Http協議

4.實體首部字段

計算機網絡4:Http協議

4.具體應用

4.1 連接管理

計算機網絡4:Http協議

4.1.1 短連接與長連接

計算機網絡4:Http協議

4.1.2 流水線

計算機網絡4:Http協議

4.2 Cookie

HTTP 協議是無狀態的,主要是爲了讓 HTTP 協議儘可能簡單,使得它能夠處理大量事務。HTTP/1.1 引入 Cookie 來 保存狀態信息。

計算機網絡4:Http協議

4.2.1 Cookie的用途

計算機網絡4:Http協議

4.2.2 創建過程

服務器發送的響應報文包含 Set-Cookie 首部字段,客戶端得到響應報文後把 Cookie 內容保存到瀏覽器中。

HTTP/1.0 200 OK 
Content-type: text/html 
Set-Cookie: yummy_cookie=choco 
Set-Cookie: tasty_cookie=strawberry
[page content]

4.2.3 Cookie的分類

  1. 會話期 Cookie:瀏覽器關閉之後它會被自動刪除,也就是說它僅在會話期內有效。
  2. 持久性 Cookie:指定過期時間(Expires)或有效期(max-age)之後就成爲了持久性的 Cookie。
Set-Cookie: id=a3fWa; Expires=Wed, 21 Oct 2015 07:28:00 GMT;

4.2.4 Secure

計算機網絡4:Http協議

4.3 Session

除了可以將用戶信息通過 Cookie 存儲在用戶瀏覽器中,也可以利用 Session 存儲在服務器端,存儲在服務器端的信 息更加安全。

Session在服務器的存儲位置

計算機網絡4:Http協議

使用 Session 維護用戶登錄狀態的過程如下:

計算機網絡4:Http協議

安全性:

計算機網絡4:Http協議

4.4 瀏覽器禁用Cookie

計算機網絡4:Http協議

4.5 Cookie和Session的選擇

計算機網絡4:Http協議

4.6 緩存

1.優點

計算機網絡4:Http協議

2.實現

1.讓代理服務器進行緩存
2.讓客戶端瀏覽器進行緩存

3. Cache-Control

HTTP/1.1 通過 Cache-Control 首部字段來控制緩存。

4.緩存操作

1.禁止緩存
計算機網絡4:Http協議
2.強制確認緩存

計算機網絡4:Http協議
3.私有緩存和公共緩存

計算機網絡4:Http協議
4.緩存過期機制
計算機網絡4:Http協議

ps:圖片大部分來源於cyc大佬,然後自己截圖並添加備註,僅供自己學習並做筆記使用

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