iT邦幫忙

2025 iThome 鐵人賽

DAY 28
0
Security

從0基礎開始起飛,一起一步步踏入資安系列 第 28 篇

[ Day 28 ] 淺談一下http和http請求 ( http request )

  • 分享至 

  • xImage
  •  

什麼是 HTTP?

HTTP(HyperText Transfer Protocol)是「超文字傳輸協定」,是網頁瀏覽器與伺服器溝通的語言。

簡單來說,每當你打開一個網站、按一個連結、送出一個表單時,瀏覽器都會偷偷幫你送出一個HTTP 請求(Request),伺服器再回你一個HTTP 回應(Response),你看到的網頁就是這樣來的

HTTP Request: -> 後端
前端 <- HTTP Response

HTTP 請求的基本結構

一個標準的 HTTP Request 由三個部分組成:

(1) 起始行(Request Line)
(2) 標頭(Headers)
(3) 主體(Body) ← 有些請求沒有這一段

例如,當你在網頁上按下搜尋,瀏覽器可能送出的請求會長這樣:

GET /search?q=apple HTTP/1.1
Host: www.google.com
User-Agent: Chrome/120
Accept-Language: zh-TW

解讀:

  • GET /search?q=apple HTTP/1.1:請求的第一行,表示方法、路徑與協定版本。
  • Host:、User-Agent:、Accept-Language::這些是 HTTP 標頭(Header)。
  • 空白行之後是 Body,但這裡是 GET 請求,所以沒有。

常見的 HTTP 請求方法(Method)

方法 功能說明 有無 Body 典型用途
GET 取得資料(讀取) 無 載入網頁、查詢資料
POST 送出資料(新增) 有 表單送出、登入
PUT 取代(整筆更新) 有 API 資料更新
PATCH 部分更新資料 有 API 局部更新
DELETE 刪除資料 視情況 刪除資源
HEAD 跟 GET 類似但不回傳 Body 無 檢查資源存在與 Header
OPTIONS 詢問伺服器支援哪些方法 無 CORS 預檢請求、偵測 API 能力
  • 瀏覽器最多的請求就是 GET 與 POST

HTTP 標頭(Headers)介紹

Header 名稱 作用
Host 告訴伺服器要存取哪個主機(尤其同 IP 多網站)
User-Agent 說明使用的瀏覽器或應用程式
Accept / Accept-Language 告訴伺服器希望回傳什麼格式或語言
Cookie 附帶之前伺服器設定的 cookie(例如登入狀態)
Content-Type 如果有 Body,這裡會說明 Body 格式(例如 JSON、表單)
Authorization 驗證資訊(例如 Bearer Token、Basic Auth)

HTTP Body(主體)

有些請求會在最後夾帶一段資料 → 這就是 Body。

例如登入表單(POST):

POST /login HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 27

username=ken&password=1234

或 JSON API:

POST /api/user HTTP/1.1
Host: api.example.com
Content-Type: application/json

{"name":"Ken","age":18}
  • Body 主要用於 POST / PUT / PATCH 請求,GET 通常不含 Body。

範例:用 curl 送 HTTP 請求

用 curl 這個工具在終端機手動送請求

GET

curl -v https://example.com

POST

curl -X POST https://httpbin.org/post -d "name=Ken&age=18"

JSON

curl -X POST https://httpbin.org/post \
  -H "Content-Type: application/json" \
  -d '{"msg":"hello"}'

自訂 Header

curl -H "Authorization: Bearer mytoken" https://api.example.com/data

在瀏覽器中查看 HTTP 請求

  • 打開 Chrome / Edge
  • 按 F12 或 Ctrl+Shift+I 開啟開發者工具
  • 點「Network」分頁
  • 重新整理頁面
  • 點任一請求,就能看到完整的 Headers、Request Body、Response

安全重點

  • HTTP 請求會攜帶 cookie,若未加密(HTTP 而非 HTTPS),容易被竊聽。→ 建議使用 HTTPS + Secure Cookie。
  • Authorization header 常攜帶 Bearer Token,必須妥善保護,不可在前端外洩。
  • CORS(跨來源資源共享)會用 OPTIONS 請求預先詢問伺服器,判斷跨域是否被允許。
  • 開發 API 時,應根據方法(GET / POST / PUT ...)區分用途,符合 RESTful 設計原則。
    | 元件 | 說明 |
    | --- | --- |
    | 起始行 | 指定方法、資源路徑、HTTP 版本 |
    | Header | 攜帶額外資訊,例如格式、身分、cookie |
    | Body| 載送資料的地方,常見於 POST / PUT |
    | 方法 | 決定這次請求要「幹嘛」(GET 讀、POST 寫、DELETE 刪…) |

上一篇
[ Day27 ] 更多關於cookie的介紹 !
下一篇
[ Day 29 ] 上篇的http補充、418茶壺事件
系列文
從0基礎開始起飛,一起一步步踏入資安 共 30 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言