HTTP(HyperText Transfer Protocol,超文本傳輸協定)是一種應用層協定,用於在聯網裝置之間傳輸資訊。
- 為一種請求-回應(request-response)協定
- 透過 HTTP 的典型流程 : 用戶端機器向伺服器發出請求,然後伺服器傳送回應訊息。
實際使用上,HTTP協定定義了一系列「方法」(又稱 HTTP 指令動詞),用來表示請求的類型
最常用的HTTP方法有:
- GET:請求傳回想要的資訊,通常以網站的形式
- POST:用戶端向伺服器提交某些資訊
- PUT:更新已有的資源。
- DELETE:刪除資源。
其中GET和POST會大量出現在未來的實作當中,之後會針對這兩點去做詳細說明。
HTTP 狀態代碼
有看過經典的「404 NOT FOUND」嗎XD? 這就是狀態代碼。
狀態代碼用來表示HTTP請求是否已成功完成
- HTTP狀態代碼為3位數代碼
- 開頭碼的意思
- 1xx 參考資訊 : 代表主機先暫時回應用戶端一個狀態
- 2xx 成功完成
- 3xx 重新導向
- 4xx 用戶端錯誤
- 5xx 伺服器錯誤
HTTP 請求標頭
- 當瀏覽器或其他用戶端發送 HTTP 請求到伺服器時,標頭會提供有關請求的附加信息。
- 如請求的類型、用戶端的類型、所需的回應格式等。
- 常見的 HTTP 請求標頭及其用途:
- Host:指定目標伺服器的域名或 IP 地址。
- User-Agent:描述發送請求的用戶端(通常是瀏覽器)的信息。
- 例:User-Agent: Mozilla/5.0
- Accept:用戶端能夠接收的媒體類型(MIME types)。
- 例:Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
- Accept-Language:用戶端接受的語言。
- 例:Accept-Language: en-US,en;q=0.9
舉例一個 GET 請求,用於獲取 www.example.com 上的 index.html 頁面。
Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
HTTP 回應標頭
伺服器在回應 HTTP 請求時返回的一組鍵值對,用以描述回應的屬性和狀態。
這些標頭可以提供多種有用的信息,包括資源的類型、許可權、緩存策略等。
- Content-Type:回應主體的媒體類型(MIME type)。
- 例:Content-Type: text/html
- Content-Length:回應主體的長度,以字節為單位。
- Cache-Control:指示緩存行為的指令。
- 例:Cache-Control: no-cache, no-store, must-revalidate
- Set-Cookie:設置或更新存儲在用戶端的 Cookie。
- 例:Set-Cookie: sessionId=abc123; Path=/; Expires=Wed, 09 Jun 2021 10:18:14 GMT
- Location:當回應狀態碼是 3xx(重定向)時,該標頭會指示新的 URL 位置。
- Server:描述伺服器軟體的信息。
- 例:Server: Apache/2.4.1 (Unix)
- WWW-Authenticate:指示需要某種認證方法來訪問資源。
- 例:WWW-Authenticate: Basic realm="Example"
- Date:回應產生的日期和時間。
參考資料
HTTP 狀態碼一覽表
今天到這邊,我們明天見啦