「HTTPレスポンスヘッダー」と「セキュリティヘッダー(HTTP Security Headers)」とは?仕組み・具体例・確認方法を分かりやすく解説

HTTPレスポンスヘッダーとは?セキュリティヘッダーの役割と具体例を解説 アイキャッチ画像

Webサイトの高速化やセキュリティ対策、WordPressのサイトヘルス診断などを調べていると、「HTTPレスポンスヘッダー(HTTP Response Headers)」や「セキュリティヘッダー(HTTP Security Headers)」という言葉をよく目にするようになります。

普段私たちがブラウザで見ているWebページの裏側では、サーバーからHTML(文章や画像のデータ)が届くのと同時に、「このデータはどんな形式で、どう表示し、どんな安全ルールで扱うべきか」を記した見えない添え状(HTTPレスポンスヘッダー)が毎回やり取りされています。

本記事では、HTTPレスポンスヘッダーの基本的な仕組みと実際の通信例から、サイトと訪問者を守る「セキュリティヘッダー」の代表的な項目・具体例、そしてご自身のブラウザ(開発者ツール)で10秒で確認する方法まで図解とともに分かりやすく解説します。

あわせて読みたい(WordPressサイトヘルス・SSL通信の関連記事)

WordPressのサイトヘルスに「Your website does not send all essential security headers.」と表示された場合の具体的な設定手順は「WordPressサイトヘルスの「Your website does not send all essential security headers.」とは?6つのセキュリティヘッダーの意味と.htaccessでの設定手順を解説」、HTTPS転送の仕組みは「「301 .htaccess 転送」とは?WordPressサイトヘルスの改善表示の意味と仕組み・必要性を分かりやすく解説」もあわせてご覧ください。

HTTPレスポンスヘッダーとは?(Webサーバーから届く「見えない添え状」)

Webサイトを見るとき、私たちのスマートフォンやパソコンのブラウザ(Chrome・Safari・Edgeなど)と、Webサイトのデータが置かれているWebサーバーの間では、「HTTP(または暗号化されたHTTPS)」という通信ルールに従ってデータのキャッチボールが行われています。

ブラウザからのHTTPリクエストヘッダーとWebサーバーからのHTTPレスポンスヘッダーのやり取りを図解したイラスト
ブラウザからの「注文票(リクエストヘッダー)」に対し、サーバーは「添え状(レスポンスヘッダー)」と「Webページ本体(HTML)」をセットで返送している

宅配便の「送り状(伝票)」と「箱の中身」に例えると分かりやすい

HTTP通信で送られてくるデータは、大きく分けて「ヘッダー(Header:頭部・添え状)」と「ボディ(Body:本体データ)」の2つで構成されています。これをネット通販の宅配便に例えると、それぞれの役割が一目でイメージできます。

  • HTTPリクエストヘッダー(注文票):ブラウザからサーバーへ送るメッセージ。「/index.html のページをください」「私はiPhoneのSafariで、日本語設定です」といった自己紹介や希望条件が書かれています。
  • HTTPレスポンスボディ(箱の中の商品):サーバーから返ってくるWebページのHTML文章やCSS、画像ファイルそのものです。ブラウザの画面上に表示される表側のデータにあたります。
  • HTTPレスポンスヘッダー(箱の外側に貼られた送り状・取扱ラベル):箱の中身(HTML)を開ける前に、ブラウザが最初に読み取る添え状です。「通信は成功しました(200 OK)」「中身はUTF-8のHTML文書です」「1時間はキャッシュして構いません」「ワレモノなので安全ルール(セキュリティヘッダー)を守って開けてください」といった指示が書かれています。

実際のHTTPレスポンスヘッダーの具体例(生データの見た目)

では、実際にWebサーバーからブラウザへ返ってくる「HTTPレスポンス」はどのような文字で書かれているのでしょうか。具体例を見てみましょう。

HTTP/2 200 OK
date: Mon, 02 Nov 2026 04:00:00 GMT
content-type: text/html; charset=UTF-8
cache-control: max-age=3600, public
content-encoding: br
strict-transport-security: max-age=31536000
x-content-type-options: nosniff
referrer-policy: strict-origin-when-cross-origin

<!DOCTYPE html>
<html lang="ja">
<head>
  <title>サンプルページのタイトル</title>
...(ここから下がWebページ本体のHTMLデータ)

上のコードのうち、空行より上の8行(HTTP/2 200 OK から referrer-policy: ... まで)が「HTTPレスポンスヘッダー」であり、空行より下の <!DOCTYPE html> 以降が「HTTPレスポンスボディ(HTML本体)」です。すべて「項目名: 設定値」というシンプルな1行ずつのペアで記述されています。

代表的なHTTPレスポンスヘッダーの種類と具体例

HTTPレスポンスヘッダーには数十種類の項目が存在しますが、実務でよく使われるものは大きく「基本・データ形式の通知」「キャッシュ・転送(リダイレクト)の制御」「セキュリティの指示(セキュリティヘッダー)」の3グループに分けることができます。

HTTPレスポンスヘッダーの3つの分類(基本・形式の通知、キャッシュ・転送、セキュリティ指示)の違いを図解したイラスト
レスポンスヘッダーは「文字化けせず正しく表示する」「2回目以降の表示を速くする」「攻撃から守る」という3つの役割を担っている

まずは、セキュリティ以外の「一般のHTTPレスポンスヘッダー」で特に重要な5つの具体例を表で確認しましょう。

ヘッダー名 出力の具体例 役割・ブラウザへの指示内容
Content-Type text/html; charset=UTF-8
image/webp
送ったデータの種類(HTML・画像・JSONなど)と文字コードを伝え、文字化けを防ぐ
Cache-Control max-age=86400, public
no-store, no-cache
画像やページをブラウザに何秒間一時保存(キャッシュ)させるか、または保存禁止にするかを指定する
Location https://example.com/new/ 301リダイレクト(恒久転送)や302転送の際、「新しい移動先URLはこちらです」と案内する
Set-Cookie sid=abc; Secure; HttpOnly ログイン状態やカート情報を保持するためのCookie(小さな会員証データ)をブラウザに保存させる
Content-Encoding gzip / br(Brotli) 通信量を減らすためにデータをどの圧縮方式で小さくして送ったかを伝え、ブラウザ側で解凍させる

セキュリティヘッダー(HTTP Security Headers)とは?なぜ重要なのか

上で見たHTTPレスポンスヘッダーのうち、「サイバー攻撃や情報漏洩からサイトと読者を守るための指示」に特化したヘッダー群を総称して「セキュリティヘッダー(HTTP Security Headers)」と呼びます。

現代のWebブラウザ(ChromeやSafariなど)には、もともと強力な防犯機能(不正スクリプトの遮断、偽装ファイルのブロック、暗号化通信の強制など)が備わっています。しかし、古いWebサイトとの互換性を保つため、サーバー側から明示的に「この防犯ルールをオンにしてください」と指示(セキュリティヘッダーを送信)しない限り、ブラウザが一部の保護機能を控えめに動かしてしまうケースがあります。

代表的なセキュリティヘッダーの3つの防御領域(通信の暗号化強制・偽装や不正実行阻止・情報と端末の保護)を図解したイラスト
セキュリティヘッダーは「通信経路の暗号化」「偽装ファイルや透明ボタン詐欺の阻止」「URL情報やスマホ機能の保護」の3方向から読者を守る

代表的な7つのセキュリティヘッダーの解説と記述例

ここからは、Webサイトの安全性を高めるうえで押さえておきたい代表的な7つのセキュリティヘッダーについて、それぞれの役割と実際の記述例(出力例)を詳しく解説します(サイバー攻撃の基本用語については「フィッシング詐欺やマルウェアとは?知っておきたいセキュリティ用語まとめ【図解】」も参考にしてください)。

Strict-Transport-Security(HSTS:HTTPS暗号化通信の強制)

ブラウザに対して「今後一定期間は、このサイトへ接続するときに必ず最初から暗号化された https:// だけを使うこと」を記憶させるヘッダーです(SSL・HTTPSの仕組みについては「SSLとは?独自SSLと共有SSLの違い・仕組み・サーバー管理画面の見方を図解で解説」で詳しく解説しています)。

Strict-Transport-Security: max-age=31536000
  • 具体例の意味:max-age=31536000 は「31,536,000秒(=1年間)、このサイトがHTTPS専用であることをブラウザに記憶させる」という指定です。
  • 防げるリスク:フリーWi-Fi環境などで、最初の http:// 通信の隙を突いて暗号化を解除させようとする「SSLストリッピング攻撃(中間者攻撃)」を無効化できます。

Content-Security-Policy(CSP:混在コンテンツ解消・読込元の制限)

ページ内で読み込む画像・JavaScript・CSSなどの取得元を制限したり、古い http:// リソースを自動的に https:// へ変換させたりする多機能なセキュリティヘッダーです。

Content-Security-Policy: upgrade-insecure-requests
  • 具体例の意味:upgrade-insecure-requests を指定すると、記事内に古い http:// 始まりの画像URLが残っていても、ブラウザが自動的に https:// に書き換えて通信します。
  • 防げるリスク:「保護されていない通信(混在コンテンツ / Mixed Content)」の警告を防げるほか、さらに細かく default-src 'self' 等を指定すれば、外部の悪意あるサーバーから不正なスクリプト(XSS)が読み込まれるのを遮断できます。

X-Content-Type-Options(MIMEスニッフィングによるファイル偽装の防止)

サーバーが Content-Type で伝えたファイル形式をブラウザが勝手に推測・変更(MIMEスニッフィング)して実行するのを禁止するヘッダーです。

X-Content-Type-Options: nosniff
  • 具体例の意味:設定値は nosniff(嗅ぎ回らない=中身を勝手に推測しない)の1種類のみです。
  • 防げるリスク:攻撃者が「拡張子は .jpg(画像)だけれど中身は悪質なプログラム」という偽装ファイルを設置した際、ブラウザが勝手にプログラムとして実行してしまう事故を確実に防ぎます。

X-Frame-Options(クリックジャッキング攻撃・無断埋め込みの防止)

あなたのWebページを、全く無関係な外部サイトの <iframe>(埋め込み枠)の中に勝手に表示させることを禁止するヘッダーです。

X-Frame-Options: SAMEORIGIN
  • 具体例の意味:SAMEORIGIN は「同じドメイン(自分のサイト内)からの埋め込みだけを許可し、外部サイトからの埋め込みは拒否する」という指定です(一切の埋め込みを禁止する場合は DENY)。
  • 防げるリスク:悪意あるサイトがあなたのページを透明な枠で重ねて表示し、読者に気づかせないまま購入ボタンや退会ボタンをクリックさせる「クリックジャッキング(Clickjacking)攻撃」を防ぎます。

Referrer-Policy(外部サイトへ渡す参照元URL情報の制限)

サイト内のリンクをクリックして外部サイトへ移動した際、移動先へ伝える「どのURLから来たか(リファラー情報)」の公開範囲をコントロールするヘッダーです。

Referrer-Policy: strict-origin-when-cross-origin
  • 具体例の意味:自分のサイト内ではフルURLを伝え、外部のHTTPSサイトへ移動するときは「ドメイン名(https://example.com/)のみ」を伝え、暗号化されていないHTTPサイトへ移動するときは一切伝えないという最もバランスの良い指定です。
  • 防げるリスク:URLの末尾に含まれる検索キーワードや個人用のパラメータ、非公開ページのパスが外部サイトへ漏洩するのを防ぎます。

Permissions-Policy(カメラ・マイク・位置情報などの端末機能制限)

ブラウザが利用できるスマートフォンやPCのハードウェア機能(カメラ、マイク、GPS位置情報、USB、決済機能など)の権限を、サイト側であらかじめロックするヘッダーです。

Permissions-Policy: camera=(), microphone=(), geolocation=()
  • 具体例の意味:機能名=() のように空のカッコを指定すると、そのページおよびページ内の埋め込み枠(iframe)での機能使用を全面的にオフにします。
  • 防げるリスク:万が一、外部から読み込んだ広告スクリプト等に不審な動作があっても、読者のカメラや位置情報が無断で使われるのを防げます。

X-XSS-Protection(旧ブラウザ向けXSSフィルターの制御)

古いブラウザに搭載されていた簡易的なクロスサイトスクリプティング(XSS)検知フィルターの挙動を指定するヘッダーです。

X-XSS-Protection: 1; mode=block
  • 具体例の意味:1; mode=block は「不正なスクリプト注入を検知したらページの描画自体をブロックする」という指定です(近年のブラウザではCSPでの保護が主流ですが、各種セキュリティ診断ツールとの互換性のために設定されることが多い項目です)。

自分のサイトのHTTPレスポンスヘッダーを確認する方法

「自分のサイトから今どんなHTTPレスポンスヘッダーやセキュリティヘッダーが出力されているのか」は、特別なソフトを入れなくても、普段使っているブラウザ(Google ChromeやMicrosoft Edgeなど)で10秒で確認できます。

ブラウザの開発者ツール(F12キー)のNetworkタブからHTTPレスポンスヘッダーを確認する3ステップの図解イラスト
ChromeやEdgeで「F12 > Network > 再読み込み > ドメイン選択 > Headers」の順に開くと、実際のレスポンスヘッダー一覧を確認できる

ブラウザの開発者ツール(検証画面)で確認する手順

  • 検証画面(DevTools)を開く:確認したいWebページをChromeやEdgeで開き、キーボードの F12 キーを押します(または画面上で右クリックして「検証」を選択します)。
  • 「Network(ネットワーク)」タブを選んで再読み込み:開発者ツール上部のメニューから「Network」をクリックし、その状態で F5 キー(またはブラウザの更新ボタン)を押してページを再読み込みします。
  • 一番上の行をクリックして「Response Headers」を見る:通信一覧の一番上に表示されるページのドメイン名(Document)をクリックし、右側の「Headers」タブの中にある「Response Headers」を開くと、サーバーから届いたすべてのヘッダーが一覧表示されます。

Webサーバー(.htaccess)でセキュリティヘッダーを一括追加する記述例

エックスサーバーやConoHa WING、ロリポップ!、さくらインターネットなどの一般的なレンタルサーバー(Apache / LiteSpeed環境)を使用している場合、サイトのルートディレクトリにある .htaccess ファイルの末尾に以下のコードを追記することで、主要なセキュリティヘッダーを一括で出力できます(編集前には必ず .htaccess のバックアップを保存してください)。

# BEGIN HTTP Security Headers
<IfModule mod_headers.c>
  Header always set Content-Security-Policy "upgrade-insecure-requests"
  Header always set Strict-Transport-Security "max-age=31536000" env=HTTPS
  Header always set X-Content-Type-Options "nosniff"
  Header always set X-Frame-Options "SAMEORIGIN"
  Header always set X-XSS-Protection "1; mode=block"
  Header always set Referrer-Policy "strict-origin-when-cross-origin"
  Header always set Permissions-Policy "accelerometer=(), camera=(), geolocation=(), gyroscope=(), magnetometer=(), microphone=(), payment=(), usb=()"
</IfModule>
# END HTTP Security Headers

まとめ

「HTTPレスポンスヘッダー」と「セキュリティヘッダー(HTTP Security Headers)」の仕組み・具体例・確認方法について解説しました。最後に本記事のポイントを整理します。

本記事のポイントまとめ

  • HTTPレスポンスヘッダーとは:WebサーバーがHTML本体と一緒にブラウザへ返す「通信の添え状(送り状)」であり、文字コード(Content-Type)やキャッシュ期間(Cache-Control)、転送先(Location)などを伝える役割を持つ。
  • セキュリティヘッダーとは:レスポンスヘッダーの中でも「ブラウザの防犯機能を有効にするための安全指示書」にあたる項目群。
  • 代表的なセキュリティヘッダーの効果:Strict-Transport-Security(HSTS) でHTTPS通信を強制し、X-Content-Type-Options: nosniff や X-Frame-Options: SAMEORIGIN でファイル偽装や透明ボタン詐欺(クリックジャッキング)を防ぎ、Referrer-Policy と Permissions-Policy で読者のプライバシーと端末機能を保護する。
  • ブラウザで簡単に確認可能:ChromeやEdgeの「検証(F12)> Network > Response Headers」を開けば、現在出力されているヘッダーを10秒でチェックできる。

HTTPレスポンスヘッダーとセキュリティヘッダーは、普段画面の表側には見えない裏方の仕組みですが、正しく設定しておくことでサイトの表示速度(キャッシュ制御)と安全性(ブラウザ保護)の両方を大きく高めてくれます。ぜひ一度、開発者ツールでご自身のサイトのレスポンスヘッダーを確認してみてください。


eguchi.netをもっと見る

購読すると最新の投稿がメールで送信されます。