3.2.1.Basic concept

1.Overview (參考自wiki)

  • HTTP是一個用戶端終端(用戶)和伺服器端(網站)請求和應答的標準(TCP)。通過使用網頁瀏覽器、網路爬蟲或者其它的工具,用戶端發起一個HTTP請求到伺服器上指定埠(預設埠為80)。我們稱這個用戶端為用戶代理程式(user agent)。

  • 應答的伺服器上儲存著一些資源,比如HTML檔案和圖像。我們稱這個應答伺服器為源伺服器(origin server)。在用戶代理和源伺服器中間可能存在多個「中間層」,比如代理伺服器、閘道器或者隧道(tunnel)。

2.HTTP Request

  • HTTP請求可分為三個部分

    • 請求方法URI協議/版本

      • 如上圖, GET代表請求方法, /blo/pos...代表URI, HTTP 1.1是協議的版本

    • 請求頭(Request Header)

    • 請求正文

      • 請求頭和請求正文之間是一个空行, 這個行非常重要, 它表示請求頭已經結束, 接下来的是請求正文

3.Request Method

  • HTTP 1.1協定中共定義了八種方法

    • 1.GET:向指定的資源發出顯示請求,使用GET方法應該只用在讀取資料

      • 2.POST: 向指定資源提交資料, 請求伺服器進行處理(例如提交表單或者上傳檔案. 資料被包含在請求本文中.這個請求可能會建立新的資源或修改現有資源, 或二者皆有。

    • 3.PUT:向指定資源位置上傳其最新內容

    • 4.DELETE:請求伺服器刪除Request-URI所標識的資源

    • 5.TRACE:回顯伺服器收到的請求, 主要用於測試或診斷

    • 6.HEAD:與GET方法一樣, 都是向伺服器發出指定資源的請求. 只不過伺服器將不傳回資源的本文部份

    • 7.OPTIONS:這個方法可使伺服器傳回該資源所支援的所有HTTP請求方法

    • 8.CONNECT:HTTP/1.1協定中預留給能夠將連線改為管道方式的代理伺服器. 通常用於SSL加密伺服器的連結(經由非加密的HTTP代理伺服器)

4.HTTP Response

  • HTTP響應可分為三個部分

    • 狀態行

      • status code

      • 響應頭(Response Header)

      • Location

        • Server

          • WWW-Authenticate

            • Content-Encoding

            • Content-Language

            • Content-Length

            • Content-Type

            • Last-Modified

            • Expires

      • 響應正文

5.Status code

  • 200 : OK (客户端請求成功)

  • 400 : Bad Request (由於客户端請求有語法錯誤,不能被服務器所理解)

  • 401 : Unauthorized (請求未經授權, 這個狀態代碼必須和WWW-Authenticate一起使用)

  • 403 : Forbidden (服务器收到請求, 但是拒絕提供服務. 服務器通常會在響應正文中给出不提供服務的原因)

  • 404 : Not Found (請求的資源不存在, 例如輸入了錯誤的URL)

  • 500 : Internal Server Error (服務器發生不可預期的錯誤,導致無法完成客户端的請求)

  • 503 : Service Unavailable (服務器當前不能夠處理客户端的請求, 在一段時間之後, 服務器可能会恢復正常)

6.HTTP/2 v.s HTTP/1.1 (參考自Joomla)

  • 1.API 不用修改: HTTP/2多數的header與HTTP/1.1相同, 因此可以向下相容HTTP/1.1

  • 2.建立在 SPDY 的基礎上

  • 3.伺服器推送: 例如可以在瀏覽器尚未發出請求前, 預先推送 CSS 或頁面 Layout 到瀏覽器上, 增加之後的頁面載入速度

  • 4.標頭壓縮與編碼

  • 5.流程下載控制與優先級

  • 6.不強制採用加密傳輸

7.HTTP v.s HTTPS

  • https 是 http over SSL 的縮寫(SSL: Secure Sockets Layer), 也就是將常見的 http 協定經過加密後的版本, 目前已是網路上進行加密通訊之全球化標準

  • https 的功用

    • 1.讓使用者確認伺服器的身份:

      • 伺服器若需啟用 https 的加密協定, 必需安裝 SSL 憑證於伺服器中, 且此 SSL 憑證中會記載伺服器的相關資訊, 如憑證發放單位、憑證有效日期及網站的網址等資訊。當使用者透過 IE 或其他網頁瀏覽器瀏覽加密網頁時, 瀏覽器會自動檢查伺服器的憑證中上述的三種資訊是否正確, 只要其中一項不通過檢查, 瀏覽器就會跳出警告, 告知使用者這個網站可能是不安全, 甚至是惡意人士偽造的

    • 2.內容加密

      • 當伺服器使用 https 協定時, 所有在使用者端(瀏覽器)和伺服器之間傳遞的資料, 都會經過加密, 所以就算使用者的密碼或信用卡號碼在網路上被攔截, 也必需花費相當功夫的解碼後才可以被讀出解讀

    • 3.資料完整性確認

      • SSL 會自動偵測資料於傳遞途中是否有遭到修改, 使用者便可以安心地將個人私密資料(如信用卡資訊)透過網際網路進行傳輸, 並信任 SSL 機制會保護這些資訊的隱私及安全性

Last updated