はじめに
こんにちは!😆 おさわです。
今回は、HTTPヘッダーの基本についてまとめました。
Webアプリ開発では、ヘッダーを意識せずに動くことは多いけれど、実務で性能・セキュリティを最適化するには理解が必須です。
この記事では、主要なHTTPヘッダーを整理し、次回以降でテーマごとに深掘りしていきます!
HTTPヘッダーとは
HTTPヘッダーとは、ウェブブラウザ(クライアント)とウェブサーバー間でのHTTP通信において、リクエストやレスポンスに付加されるメタデータ(付加情報)です。
リクエストの内容やクライアント・サーバーの意図、データの形式やエンコード方式など、通信を制御するための詳細な情報が含まれ、効率的で正確なデータ送受信のために重要な役割を担います。
実際のリクエスト/レスポンス例
👇リクエスト
GET /dashboard HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0
Accept: application/json
Authorization: Bearer abcdef12345
Cookie: sessionId=xyz987
👇レスポンス
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-cache
Set-Cookie: sessionId=xyz987; HttpOnly; Secure
HTTPヘッダーの種類
HTTPヘッダーは、その役割によって複数のカテゴリに分けられます。
1. リクエストヘッダー
クライアントがサーバーに送信するリクエストに関する情報です。
| 種類 | 用途 | 例 |
|---|---|---|
Host |
リクエストされたサーバーのホスト名 | Host: example.com |
User-Agent |
クライアントのソフトウェア情報 | User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) |
Accept |
クライアントが受け入れ可能なメディアタイプ | Accept: application/json |
Authorization |
Bearerトークン、Basic認証などで使用 | Authorization: Bearer abcdef12345 |
Cookie |
セッションIDやユーザー追跡に利用 | Cookie: sessionId=xyz987 |
※Authorization と Cookie は両方セッション管理に使いますが、役割が違います。
(次回以降で詳細)
Authorizationの例
Authorizationは、クライアントがサーバーにアクセスするための認証情報を送信するヘッダーです。
Authorization: Basic dXNlcjpwYXNzd29yZA==
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
2. レスポンスヘッダー
サーバーがクライアントに返信するレスポンスに関する情報です。
| 種類 | 用途 | 例 |
|---|---|---|
Content-Type |
返信ボディのメディアタイプ | Content-Type: application/json; charset=utf-8 |
Location |
リダイレクト先のURL | Location: https://example.com/login |
Server |
サーバーの種類やバージョン情報 | Server: nginx/1.23.1 |
Set-Cookie |
サーバーがクライアントにCookieを設定 | Set-Cookie: sessionId=xyz987; HttpOnly; Secure |
Cache-Control |
キャッシュ制御ヘッダー | Cache-Control: no-cache, no-store, must-revalidate |
ETag |
リソースのバージョン識別子 | ETag: "abc123" |
※Cache-Control と ETag の組み合わせで効率的に通信することもできます。
(次回以降で詳細)
Set-Cookieの属性
Set-CookieはサーバーからクライアントへCookieを保存するよう指示するヘッダーです。
セッション管理やトラッキングに利用されます。
属性一覧👇
| 属性 | 説明 |
|---|---|
HttpOnly |
JavaScriptからアクセス不可(XSS対策) |
Secure |
HTTPS通信でのみ送信 |
SameSite |
クロスサイトリクエスト時の送信制御 |
Set-Cookie: sessionId=abc123; HttpOnly; Secure; SameSite=Strict
3. 表現ヘッダー
メッセージ本体(ボディ)のデータに関するメタデータです。
| ヘッダー | 用途 | 例 |
|---|---|---|
Content-Encoding |
圧縮方式を指定 | gzip |
Content-Length |
本文のバイト数 | Content-Length: 3495 |
Content-Language |
本文の言語 |
ja, en-US
|
Last-Modified |
リソースの最終更新日時 | Wed, 21 Oct 2015 07:28:00 GMT |
開発でよく使うヘッダーまとめ
| カテゴリ | ヘッダー | 主な用途 |
|---|---|---|
| 認証/認可 | Authorization, Cookie | ログインセッション管理 |
| キャッシュ制御 | Cache-Control, ETag | 通信効率化 |
| セキュリティ強化 | Set-Cookie属性, X-Frame-Options | 攻撃対策 |
| コンテンツ制御 | Content-Type, Content-Encoding | 本文の形式・圧縮指定 |
よく使うヘッダーの実務Tips
-
Authorization
→ API設計では「ヘッダーで送る」のが基本。URLパラメータで送るのは危険。 -
Cache-Control
→ no-store と no-cache の違いを明記すると、「キャッシュ効かないはずなのに…」問題を避けられる。 -
ETag
→ If-None-Match と組み合わせて「差分更新」を実現できる。 -
Content-Type
→ JSON API なら application/json; を忘れずに。
あとがき
今回は、Webアプリ開発で使われるHTTPヘッダーの基本についてまとめました。
他にも、セキュリティ系のヘッダーがあったりします。
例:
- X-Frame-Options(クリックジャッキング対策)
- Strict-Transport-Security(HSTS)
- X-Content-Type-Options: nosniff
これらはセキュリティ強化に直結するので次回詳しく掘り下げます!💪
👉 次回:セキュリティヘッダー編はこちら(準備中)