October 16, 2023

Viiisit [Internet] - HTTP / HTTPS!

#internet#interview

不知道大家在看網址的時候,有沒有好奇網址的開頭都有 http 或者 https,這兩者到底是什麼?
差別又在哪?網路基礎知識難免要理解 HTTP 與 HTTPS 的相關知識,我們來一探究竟吧!

HTTP 是什麼?

HTTP 的全名為 HyperText Transfer Protocol,超文本傳輸協定,是全球資訊網的數據通信的基礎。設計 HTTP 最初的目的是為了提供一種發布和接收 HTML 頁面的方法。 透過 HTTP 或者 HTTPS 協定請求的資源由統一資源識別碼(Uniform Resource Identifiers,URI)來標識。

通常,由 HTTP 客戶端(client)發起一個請求,建立一個到伺服器指定埠(預設是 80 埠)的 TCP 連線。HTTP 伺服器(server)則在那個埠監聽客戶端的請求。一旦收到請求,伺服器會向客戶端返回一個狀態,比如 “HTTP/1.1 200 OK”,以及返回的內容,如請求的檔案、錯誤訊息、或者其它訊息。

HTTP vs HTTPS

HTTP(Hypertext Transfer Protocol)和 HTTPS(Hypertext Transfer Protocol Secure)是用於在互聯網上傳輸資料的兩種不同協議,他們在安全性和資料傳輸方面存在顯著差異。

HTTP 是一種標準的網路協議,用於在網頁瀏覽器和網路伺服器之間傳輸資料。因為是明文協議,意味著資料在傳輸過程中不進行加密,因此容易受到中間人攻擊的威脅。如果惡意使用者能夠截取 HTTP 傳輸的資料包,他們可以輕鬆地查看和竊取其中的信息,包括敏感的個人資料和登入憑證。

相較之下,HTTPS 是 HTTP 的安全版本。HTTPS 使用 SSL(Secure Sockets Layer)或其繼任者 TLS(Transport Layer Security)協定來加密在瀏覽器和伺服器之間傳輸的資料。在 HTTPS 連線中,資料在傳輸過程中被加密,使得中間人攻擊變得非常困難。 HTTPS 通常使用數位憑證來驗證伺服器的身份,確保使用者連接的是正確的伺服器而不是惡意偽裝的網站。這為用戶提供了更高的安全性和隱私保護。

主要的差異在於資料加密和安全性。 HTTP 是不安全的明文協議,而 HTTPS 透過資料加密和身份驗證提供了更高的安全性,因此在涉及敏感資訊傳輸的情況下,如線上銀行、電子郵件和電子商務等,HTTPS 被廣泛採用以確保用戶資料的保護和隱私。

請求方法(動作)

剛剛提及到 client 會發出請求,那麼有請求這項動作,這個動作就要搭配相對應的動詞!
HTTP/1.1 協定中共定義了八種方法(動作)來以不同方式操作指定的資源,
以下介紹五種常見的請求方法:

➤ GET

GET 方法,用於向伺服器請求數據,通常用於讀取資源而不修改他們,是冪等(無論操作執行多少次結果都是相同的),適合在瀏覽器中獲取網頁內容,查詢參數通常附加在 URL 上的查詢字串(query string)中,且每個請求只能請求一個 URL。

➤ POST

1
2
3
4
5
6
7
8
POST /example/post-handler HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Content-Type: application/x-www-form-urlencoded
Content-Length: 29

param1=value1&param2=value2

POST 方法用於向伺服器發送數據,適合處理表單提交、資料上傳等需要向伺服器傳送資料的情況。

GET POST 在發送表單上的差異!

GET 和 POST 在發送表單資料時的主要差異在於資料的傳輸方式:GET 將資料附加到 URL 中,而 POST 將資料放在 request body 中,更適合處理敏感資訊和大量資料。

➤ PUT

➤ PATCH

➤ DELETE

# 讓我們透過一個線上購物來說明這些不同的 HTTP 請求方法:

POST vs PUT vs PATCH

在理解上 POST/PUT 都可以用來新增,PATCH/PUT 都可以用來修改,但這其中還是存在著一些差異,來看看以下表格:
POST PUT PATCH

POST 用於建立新資源而不取代原始資源或執行非冪等操作,PUT 用於完全取代指定資源,PATCH 用於部分更新資源。

safe methods & idempotent methods & cacheable methods

在上方表格中有提及一個 idempotent 就是所謂冪等,
在 HTTP 協定中,請求方法(HTTP methods)可以根據屬性進行分類,
包括 safeidempotentcacheable

Safe(安全)

Idempotent(幂等)

Cacheable(可缓存)