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、內部連結及外部資源,並持續檢查索引與錯誤狀態。