HTTP 協定是什麼?一次看懂 HTTPS 差異與網站安全重點

HTTP(HyperText Transfer Protocol,超文本傳輸協定)是瀏覽器、App、API 用戶端與網站伺服器交換資料的應用層協定。使用者開啟網頁、送出表單、進行 HTTP 網站登入、載入圖片或取得 JSON 資料時,背後通常都由 HTTP 請求與回應完成。HTTP 本身不負責加密,因此正式網站應使用由 TLS 保護的 HTTPS,避免帳號、密碼、Cookie 與個人資料在傳輸途中遭到竊聽或竄改。

HTTP 協定是什麼

HTTP 採用用戶端與伺服器模型。用戶端通常是 Chrome、Safari、Firefox 等瀏覽器,也可能是手機 App、搜尋引擎爬蟲或後端程式;伺服器則可能是 Nginx、Apache、IIS、雲端服務或網站應用程式。

當使用者輸入網址後,瀏覽器會解析網域名稱、建立網路連線,接著送出 HTTP 請求。伺服器收到請求後,依照網址、HTTP 方法、標頭與驗證資訊執行對應程序,再傳回狀態碼、回應標頭及內容。內容可能是 HTML、CSS、JavaScript、圖片、影片或 JSON。

HTTP 被歸類在 OSI 模型的應用層,並依賴下層協定完成實際傳輸。HTTP/1.1 與 HTTP/2 通常使用 TCP;HTTPS 會在 HTTP 與 TCP 之間加入 TLS;HTTP/3 則透過建立在 UDP 上的 QUIC 傳輸。

HTTP 請求與回應如何運作

HTTP 請求的主要組成

一個 HTTP 請求通常包括請求方法、資源路徑、協定版本、標頭及選擇性的訊息內容。例如瀏覽器讀取首頁時,可能向伺服器送出 GET / HTTP/1.1。Host 標頭會指出目標網域,Accept 可表示用戶端能處理的內容格式,Authorization 則可能攜帶身分驗證資訊。

POST、PUT、PATCH 等請求還可以包含訊息內容。網站送出的表單資料可採用表單編碼或 multipart 格式;前後端 API 則經常使用 JSON。即使使用 POST,資料也不會因此自動加密,真正保護傳輸內容的是 HTTPS。

HTTP 回應的主要組成

伺服器回應包含協定版本、HTTP 狀態碼、回應標頭及內容。狀態碼可快速說明處理結果,例如 200 代表成功、301 代表永久重新導向、404 代表找不到資源、500 則表示伺服器發生錯誤。

Content-Type 用來描述內容格式,Cache-Control 控制快取方式,Set-Cookie 可要求瀏覽器儲存 Cookie,Location 則常與 3xx 狀態碼搭配,將使用者重新導向其他網址。

常見 HTTP 方法與使用情境

HTTP 方法分析表

HTTP 方法 主要用途 是否通常包含內容 冪等性 常見情境
GET 讀取資源 取得網頁、圖片或 API 資料
POST 新增資料或執行操作 登入、送出表單、建立訂單
PUT 完整取代指定資源 完整更新一筆 API 資料
PATCH 局部修改資源 不一定 修改會員名稱或部分設定
DELETE 刪除指定資源 可選 刪除文章或 API 資料
HEAD 只取得回應標頭 檢查檔案、快取或更新時間
OPTIONS 查詢支援的通訊方式 CORS 預檢請求
CONNECT 建立網路通道 透過代理伺服器建立 TLS 通道

冪等是指相同請求執行一次或多次,預期對伺服器資源產生相同結果。例如重複執行 PUT,最終資源應維持相同狀態;重複送出 POST 則可能建立多筆資料。因此,付款與訂單系統通常會搭配冪等鍵,降低重複送出造成的風險。

GET 不應用來修改資料,也不應將密碼、身分證字號或權杖放進網址查詢參數。網址可能出現在瀏覽紀錄、伺服器日誌、分析工具與 Referer 資訊中,容易造成敏感資料外洩。

HTTP 狀態碼代表什麼

1xx 資訊回應

1xx 表示伺服器已收到請求並正在處理。常見的 100 Continue 允許用戶端在傳送大型內容前,先確認伺服器是否願意接收。

2xx 成功回應

200 OK 是最常見的成功狀態;201 Created 表示資源已建立;204 No Content 代表請求成功,但回應不需要附帶內容。API 應依照實際處理結果選擇狀態碼,而不是所有結果都傳回 200。

3xx 重新導向

301 Moved Permanently 表示資源永久移動,適合網站改版與網址搬遷;302 Found 常用於暫時重新導向;304 Not Modified 則與瀏覽器快取有關,可避免重複下載未變更的內容。

4xx 用戶端錯誤

400 Bad Request 代表請求格式或參數不正確;401 Unauthorized 通常表示尚未完成身分驗證;403 Forbidden 代表伺服器理解請求,但拒絕存取;404 Not Found 則表示找不到資源。429 Too Many Requests 可用於流量限制。

5xx 伺服器錯誤

500 Internal Server Error 是一般性的伺服器錯誤;502 Bad Gateway 表示閘道或代理伺服器收到無效回應;503 Service Unavailable 代表服務暫時無法使用;504 Gateway Timeout 則是上游服務回應逾時。

HTTP 與 HTTPS 協定有何差異

HTTPS 是 HTTP over TLS,也就是在 HTTP 通訊外加入 TLS 加密與身分驗證。HTTP 預設連接埠是 80,HTTPS 預設連接埠則是 443。兩者的 HTTP 方法與狀態碼基本相同,主要差異在於傳輸安全性。

HTTP 與 HTTPS 比較表

比較項目 HTTP HTTPS
網址開頭 http:// https://
預設連接埠 80 443
傳輸加密 沒有 使用 TLS 加密
伺服器身分驗證 沒有標準憑證驗證 透過 TLS 憑證驗證網域
資料完整性 較容易遭竄改 可偵測傳輸內容是否遭竄改
登入與個資傳輸 不適合 現代網站的必要基礎
瀏覽器顯示 可能標示「不安全」 正常顯示安全連線狀態

HTTPS 提供的核心能力包括機密性、完整性與身分驗證。加密可降低第三方直接讀取內容的風險;完整性檢查可發現資料是否被修改;憑證則協助瀏覽器確認目前連線的伺服器是否擁有該網域。

HTTPS 並不代表網站內容一定可信,也不能阻止所有釣魚、惡意程式或資料庫入侵。使用者仍應確認網域名稱,網站經營者也必須持續進行權限控管、程式更新、輸入驗證與弱點修補。

TLS 憑證與 HTTPS 建置重點

TLS 憑證由受信任的憑證機構簽發,用來綁定網域與公開金鑰。憑證具有有效期限,網站管理者必須在到期前完成更新。憑證不一定要向中華電信購買,市場上有多家商業憑證機構,也可使用 Let’s Encrypt 等免費自動化憑證服務。

憑證過期時,HTTPS 服務不一定完全無法連線,但瀏覽器通常會顯示嚴重的安全警告。此時不應改成只開放 HTTP,而應立即更新憑證並確認完整憑證鏈、網域名稱及系統時間皆正確。

網站導入 HTTPS 後,應將所有 HTTP 網址以 301 或 308 重新導向 HTTPS,避免同一內容同時存在兩種版本。網站也可設定 HSTS,要求支援的瀏覽器在指定期間內只使用 HTTPS 連線。若頁面本身採用 HTTPS,內嵌的圖片、程式與 API 也應使用 HTTPS,以免產生混合內容問題。

HTTP 網站登入為何必須使用 HTTPS

登入頁面會處理帳號、密碼、一次性驗證碼、工作階段 Cookie 與存取權杖。如果使用未加密 HTTP,同一網路中的攻擊者或不可信的中間節點可能讀取或修改傳輸資料,因此 HTTP 網站登入不應部署在公開環境。

HTTPS 必須涵蓋整個網站,而不是只有登入頁。若登入後的頁面仍使用 HTTP,工作階段 Cookie 可能在後續請求中外洩。Cookie 應設定 Secure,使其只透過 HTTPS 傳送;HttpOnly 可降低前端 JavaScript 直接讀取 Cookie 的風險;SameSite 則有助於減少跨站請求偽造攻擊。

密碼在伺服器端不應以明文保存,而應使用專為密碼設計的雜湊演算法,例如 Argon2、bcrypt 或 scrypt,並為每組密碼加入獨立鹽值。HTTPS 解決的是傳輸安全,密碼雜湊處理的是儲存安全,兩者不能互相取代。

登入功能還應考慮多因素驗證、登入失敗次數限制、異常行為偵測、工作階段更新及登出後失效機制。開發與測試時,也不應把真實帳密寫入網址、原始碼、公開文件或伺服器日誌。

HTTP 用途不只用來開啟網頁

HTTP 最常見的用途是傳送 HTML 網頁及其圖片、樣式表與 JavaScript,但現代 HTTP 用途已擴展至 API、影音串流、軟體更新、物聯網、雲端服務與微服務溝通。

REST API 常以 HTTP 方法表達資源操作,並用 JSON 傳輸資料。GraphQL 通常也透過 HTTP 傳送查詢。檔案下載可使用 Range 標頭取得部分內容,影音服務則可透過分段檔案與 HTTP 快取機制提升播放效率。

HTTP 快取能降低延遲與伺服器負載。Cache-Control 可設定內容是否允許快取及有效時間;ETag 與 If-None-Match 可判斷資源是否變更。若內容未改變,伺服器可傳回 304,減少實際下載量。

HTTP TCP UDP 之間的關係

「HTTP TCP UDP」常被用來搜尋 HTTP、TCP、UDP 三者的差異,但它們並非位於同一層級。HTTP 是應用層協定,TCP 與 UDP 則屬於傳輸層協定。

TCP 採用連線導向設計,可處理封包排序、遺失重傳與流量控制。HTTP/1.1、HTTP/2 及其 HTTPS 連線通常建立在 TCP 上。這種可靠性適合網頁與 API,但封包遺失時可能影響同一連線的後續資料。

UDP 不會像 TCP 一樣保證每個資料包都能抵達,也不保證順序。HTTP/3 並不是直接把傳統 HTTP 訊息放進一般 UDP 資料包,而是使用建立在 UDP 上的 QUIC。QUIC 整合加密、可靠傳輸與多路復用,可降低連線建立時間,並減少不同資料流互相阻塞的情況。

HTTP 版本的演進

HTTP/1.1 長期是網站通訊的主流版本,支援持續連線、Host 標頭、分塊傳輸與快取控制,但同一連線中的請求處理容易受到順序限制。網站過去常建立多條 TCP 連線,以提高同時載入資源的能力。

HTTP/2 將資料切成二進位框架,支援多路復用與標頭壓縮,使多個請求可以共用一條 TCP 連線。它改善了 HTTP/1.1 的傳輸效率,但底層 TCP 發生封包遺失時,仍可能影響整條連線。

HTTP/3 使用 QUIC 與 UDP,且加密是協定的重要部分。它能分別管理不同資料流,一個資料流發生遺失時,不必讓所有資料流一起等待。是否能使用 HTTP/3,仍取決於瀏覽器、伺服器、CDN 與網路環境是否支援。

HTTP 網址格式與常見錯誤

完整網址通常由通訊協定、主機名稱、選擇性的連接埠、路徑、查詢參數與片段組成,例如 https://www.example.com/products?id=10。其中 https 是通訊協定,www.example.com 是主機名稱,/products 是資源路徑。

正確的 HTTP 網址開頭為 http://,HTTPS 則是 https://。只寫成 http:/ 會少一個斜線,不是標準的完整網址格式,可能導致瀏覽器或程式無法正確解析。網站文件、程式設定與站內連結都應檢查這類拼寫問題。

網址大小寫規則也不完全相同。網域名稱通常不區分大小寫,但網域後面的路徑是否區分大小寫,可能受到伺服器與應用程式設定影響。為避免重複內容及失效連結,應建立一致的網址命名規則。

HTTP 對網站 SEO 的影響

Google 建議網站採用 HTTPS,以保護訪客安全。網站從 HTTP 遷移到 HTTPS 時,應保留相同的網址結構,逐一設定永久重新導向,並更新 canonical、XML Sitemap、內部連結、結構化資料及第三方資源網址。

伺服器應傳回符合實際情況的狀態碼。已永久移動的頁面使用 301 或 308;不存在且沒有替代內容的網址應回傳 404 或 410;伺服器不應讓錯誤頁持續回傳 200,否則搜尋引擎可能將其判斷為軟性 404。

HTTP/2、HTTP/3、壓縮與快取可以改善傳輸效率,但網站速度仍受到圖片大小、JavaScript 執行、伺服器回應時間及第三方程式影響。協定升級應與內容最佳化、行動裝置體驗和穩定的主機環境一起進行。

結論

HTTP 是網站、API 與網路服務交換資料的核心應用層協定,透過請求、回應、方法、標頭及狀態碼建立一致的通訊規則。HTTP/1.1 與 HTTP/2 主要依賴 TCP,HTTP/3 則透過 QUIC 與 UDP 提供傳輸能力。

由於 HTTP 不提供傳輸加密,正式網站,尤其是登入、會員、購物及政府服務,皆應全面採用 HTTPS。網站管理者還需要正確維護 TLS 憑證、重新導向、Cookie、密碼儲存及伺服器設定,才能同時兼顧安全性、使用者信任與搜尋引擎最佳化。

常見問題

1. HTTP 的中文名稱是什麼?

HTTP 全名為 HyperText Transfer Protocol,中文通常翻譯為「超文本傳輸協定」或「超文字傳輸通訊協定」,是一種用於用戶端與伺服器交換資料的應用層協定。

2. HTTP 和 HTTPS 最大差異是什麼?

最大差異是 HTTPS 使用 TLS 加密,並透過憑證驗證伺服器網域。HTTP 內容通常以未加密形式傳輸,不適合處理密碼、Cookie、個資及付款資訊。

3. HTTPS 是否代表網站一定安全?

不是。HTTPS 可保護傳輸過程,但無法保證網站內容誠實或程式沒有漏洞。使用者仍須確認網域,網站管理者也要執行權限控管、弱點修補及資料保護。

4. POST 方法是否會自動加密密碼?

不會。POST 只改變資料放置與傳送方式,不代表內容已加密。只有使用 HTTPS,才能透過 TLS 保護密碼在網路上的傳輸。

5. HTTP 為什麼使用 TCP?

HTTP/1.1 與 HTTP/2 需要可靠且有順序的資料傳輸,而 TCP 提供連線管理、封包排序及遺失重傳,因此適合承載網頁與 API 資料。

6. HTTP/3 為什麼改用 UDP?

HTTP/3 使用建立在 UDP 上的 QUIC,由 QUIC 提供可靠傳輸、加密及多路復用。如此可減少連線建立延遲,並改善 TCP 層級的隊頭阻塞問題。

7. TLS 憑證是否每年都要購買?

不一定。憑證有有效期限,但更新週期依憑證政策而定,也不一定需要付費購買。網站可使用商業憑證或 Let’s Encrypt 等免費服務,重點是到期前完成更新。

8. 憑證過期可以改用 HTTP 嗎?

不建議。改用 HTTP 會失去傳輸保護,並可能讓瀏覽器顯示不安全警告。正確做法是立即更新憑證,檢查憑證鏈、網域及伺服器設定。

9. HTTP 狀態碼 401 和 403 有何不同?

401 通常代表使用者尚未通過身分驗證,可能需要登入或提供有效憑證;403 則表示伺服器已理解請求,但使用者沒有存取該資源的權限。

10. 網站改成 HTTPS 會影響 SEO 嗎?

正確遷移通常有助於網站安全與搜尋信任。遷移時應設定 HTTP 至 HTTPS 的永久重新導向,更新 canonical、Sitemap、內部連結及外部資源,並持續檢查索引與錯誤狀態。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料