メインコンテンツまでスキップ

HTTP header

headerについてまとめる
リクエストヘッダーとレスポンスヘッダーがある

HTTPヘッダーのカテゴリ

HTTPヘッダーは用途ごとにいくつかのカテゴリに分類できます。以下に代表的なカテゴリとその例を示します。

🔐 セキュリティ関連

セキュリティを強化するために使用されるヘッダー。

  • Content-Security-Policy: XSSやデータインジェクションを防ぐ
  • Strict-Transport-Security: HTTPS通信を強制
  • X-Frame-Options: クリックジャッキング対策
  • X-Content-Type-Options: MIMEタイプスニッフィング防止
  • Referrer-Policy: リファラー情報の制御

🌐 通信制御関連

クライアントとサーバ間の通信の制御や挙動を指定する。

  • Cache-Control: キャッシュの動作を指定
  • Connection: 接続の制御(例:keep-alive)
  • Transfer-Encoding: チャンク転送などの転送形式
  • Upgrade: プロトコルのアップグレード指示

🧭 ナビゲーション/リソース取得関連

どのリソースをどう取得するか、リクエスト元に関する情報を伝える。

  • Referer: リクエスト元のURL
  • User-Agent: ブラウザやデバイス情報
  • Accept: 受け入れ可能なMIMEタイプ
  • Accept-Encoding: 受け入れ可能な圧縮形式
  • Accept-Language: 使用言語の優先度

🛠 サーバーやアプリケーション情報

サーバーの動作環境やミドルウェアなどの情報を提供する。

  • Server: Webサーバーの種類
  • X-Powered-By: フレームワークやライブラリの情報(※削除推奨)

🧾 認証・セッション関連

認証やユーザーのセッション状態に関係するヘッダー。

  • Authorization: 認証情報(Basic、Bearerなど)
  • WWW-Authenticate: 認証が必要な場合のレスポンス指示
  • Set-Cookie: Cookieの発行・更新
  • Cookie: クライアントから送られたCookie情報

📦 CORS・クロスオリジン関連

他ドメインからのアクセス制御を管理するヘッダー。

  • Access-Control-Allow-Origin: 許可するオリジン
  • Access-Control-Allow-Credentials: Cookieなど資格情報の許可
  • Access-Control-Allow-Headers: 許可されるヘッダー
  • Access-Control-Allow-Methods: 許可されるHTTPメソッド

リクエスト

ヒント

リクエストヘッダーは、たとえば Authorization, User-Agent, Accept など、クライアントが送る情報

XMLHttpRequest.withCredentials

リファレンス

サイト間の Access-Control リクエストがCookie・認証ヘッダー・TLSクライアント証明書などの資格情報を使用して行うべきかどうかを示す。
異なるドメインからの XMLHttpRequest のレスポンスは、リクエストを行う前にwithCredentialsをtrueに設定しない限り、自身のドメインのCookie値を設定できません。

レスポンス

注記

「ブラウザの動作をコントロールする」「次の通信に影響を与える」ようなものは、基本的に レスポンスヘッダー

ヘッダー名説明
Content-Security-Policy読み込めるスクリプト・画像・スタイル等の出所を制限するホワイトリスト型ポリシー。XSSなどの防止に非常に有効。
Cross-Origin-Opener-Policyブラウザのプロセスをオリジンごとに分離し、他のオリジンの干渉を防ぐ。
Cross-Origin-Resource-Policy他サイトがこのサイトのリソースを読み込むことを制限する。盗用や情報漏洩を防止。
Origin-Agent-Clusterオリジン単位でJavaScriptの実行コンテキストを分離し、プロセスの隔離を強化する。
Referrer-Policyリンク遷移時などに送信する Referer ヘッダーの内容を制御し、プライバシーを保護する。
Strict-Transport-Security一度HTTPSで接続されたサイトは今後も常にHTTPSで通信するようブラウザに強制する。
X-Content-Type-OptionsブラウザがContent-Typeと異なる内容を勝手に解釈しないようにする。MIMEスニッフィング対策。
X-DNS-Prefetch-Controlブラウザがリンク先のDNSを事前解決するかどうかを制御する。
X-Download-OptionsIE向けにダウンロードしたファイルの直接実行を防ぎ、「保存して開く」を強制する。
X-Frame-Options他サイトによる iframe 埋め込みを防ぐ。クリックジャッキング対策として有効。
X-Permitted-Cross-Domain-PoliciesFlashやPDFなどAdobe製品による外部ドメインアクセスを制御する。
X-Powered-By使用中のWebフレームワークなどの情報を開示するが、攻撃者の手がかりになるため削除が推奨される。
X-XSS-Protection古いブラウザでのXSS対策だが、動作が不安定なためHelmetなどでは無効化されることが多い。

X-Powered-By

参考URL

いくつかのWebアプリケーションフレームワークで、自身の名称やバージョン番号を記述するために使っているHTTPヘッダー
※セキュリティのため削除するのが好ましい。

Content-Security-Policy(CSP)

サーバーからブラウザへ「このページではこのようにスクリプトを制限してね」と命令するためのヘッダーです。

ページで何が起こり得るかを示す強​​力な許可リストで、多くの攻撃を軽減します クロスサイト・スクリプティング攻撃やその他のクロスサイト・インジェクションを防止するためにContent-Security-Policyヘッダーを設定します。

Strict-Transport-Security レスポンスヘッダー

リファレンス

WebサイトがブラウザにHTTPの代わりにHTTPSを用いて通信を行うように指示するためのもの。

Tips

IPアドレスから逆引きしてホスト名を取得する方法

  • ホスト名はHTTPヘッダーには含まれないため、IPアドレスから逆引きして取得する ホスト名はHTTPヘッダーには含まれないため、IPアドレスから逆引きして取得する。
    Node.jsのdns.lookupServiceメソッドを使用してDNSサーバに問い合わせを行う。
import {lookupService} from "dns";

const getHostName = (ipAddress: string): Promise<string> => {
return new Promise(function(resolve, reject) {
lookupService(ipAddress, 22, function (error, hostname, service) {
if (error) {
return reject(error);
}
resolve(hostname);
});
});
};
const hostName = await getHostName(ipAddress);

dns.lookupServiceメソッドは、問い合わせ成功時にコールバック関数を介してホスト名を返却する。 任意の変数などに初期化するには、Promiseオブジェクトでラップして返却させる。

HTTP header

headerについてまとめる
リクエストヘッダーとレスポンスヘッダーがある

HTTPヘッダーのカテゴリ

HTTPヘッダーは用途ごとにいくつかのカテゴリに分類できます。以下に代表的なカテゴリとその例を示します。

🔐 セキュリティ関連

セキュリティを強化するために使用されるヘッダー。

  • Content-Security-Policy: XSSやデータインジェクションを防ぐ
  • Strict-Transport-Security: HTTPS通信を強制
  • X-Frame-Options: クリックジャッキング対策
  • X-Content-Type-Options: MIMEタイプスニッフィング防止
  • Referrer-Policy: リファラー情報の制御

🌐 通信制御関連

クライアントとサーバ間の通信の制御や挙動を指定する。

  • Cache-Control: キャッシュの動作を指定
  • Connection: 接続の制御(例:keep-alive)
  • Transfer-Encoding: チャンク転送などの転送形式
  • Upgrade: プロトコルのアップグレード指示

🧭 ナビゲーション/リソース取得関連

どのリソースをどう取得するか、リクエスト元に関する情報を伝える。

  • Referer: リクエスト元のURL
  • User-Agent: ブラウザやデバイス情報
  • Accept: 受け入れ可能なMIMEタイプ
  • Accept-Encoding: 受け入れ可能な圧縮形式
  • Accept-Language: 使用言語の優先度

🛠 サーバーやアプリケーション情報

サーバーの動作環境やミドルウェアなどの情報を提供する。

  • Server: Webサーバーの種類
  • X-Powered-By: フレームワークやライブラリの情報(※削除推奨)

🧾 認証・セッション関連

認証やユーザーのセッション状態に関係するヘッダー。

  • Authorization: 認証情報(Basic、Bearerなど)
  • WWW-Authenticate: 認証が必要な場合のレスポンス指示
  • Set-Cookie: Cookieの発行・更新
  • Cookie: クライアントから送られたCookie情報

📦 CORS・クロスオリジン関連

他ドメインからのアクセス制御を管理するヘッダー。

  • Access-Control-Allow-Origin: 許可するオリジン
  • Access-Control-Allow-Credentials: Cookieなど資格情報の許可
  • Access-Control-Allow-Headers: 許可されるヘッダー
  • Access-Control-Allow-Methods: 許可されるHTTPメソッド

リクエスト

ヒント

リクエストヘッダーは、たとえば Authorization, User-Agent, Accept など、クライアントが送る情報

XMLHttpRequest.withCredentials

リファレンス

サイト間の Access-Control リクエストがCookie・認証ヘッダー・TLSクライアント証明書などの資格情報を使用して行うべきかどうかを示す。
異なるドメインからの XMLHttpRequest のレスポンスは、リクエストを行う前にwithCredentialsをtrueに設定しない限り、自身のドメインのCookie値を設定できません。

レスポンス

注記

「ブラウザの動作をコントロールする」「次の通信に影響を与える」ようなものは、基本的に レスポンスヘッダー

X-Powered-By

参考URL

いくつかのWebアプリケーションフレームワークで、自身の名称やバージョン番号を記述するために使っているHTTPヘッダー
※セキュリティのため削除するのが好ましい。

Content-Security-Policy(CSP)

サーバーからブラウザへ「このページではこのようにスクリプトを制限してね」と命令するためのヘッダーです。

ページで何が起こり得るかを示す強​​力な許可リストで、多くの攻撃を軽減します クロスサイト・スクリプティング攻撃やその他のクロスサイト・インジェクションを防止するためにContent-Security-Policyヘッダーを設定します。

Strict-Transport-Security レスポンスヘッダー

リファレンス

WebサイトがブラウザにHTTPの代わりにHTTPSを用いて通信を行うように指示するためのもの。

Tips

IPアドレスから逆引きしてホスト名を取得する方法

  • ホスト名はHTTPヘッダーには含まれないため、IPアドレスから逆引きして取得する ホスト名はHTTPヘッダーには含まれないため、IPアドレスから逆引きして取得する。
    Node.jsのdns.lookupServiceメソッドを使用してDNSサーバに問い合わせを行う。
import {lookupService} from "dns";

const getHostName = (ipAddress: string): Promise<string> => {
return new Promise(function(resolve, reject) {
lookupService(ipAddress, 22, function (error, hostname, service) {
if (error) {
return reject(error);
}
resolve(hostname);
});
});
};
const hostName = await getHostName(ipAddress);

dns.lookupServiceメソッドは、問い合わせ成功時にコールバック関数を介してホスト名を返却する。 任意の変数などに初期化するには、Promiseオブジェクトでラップして返却させる。

これの各説明が欲しい

Content-Security-Policy: Cross-Origin-Opener-Policy: ページのプロセスを分離するのに役立ちます Cross-Origin-Resource-Policy: 他のユーザーがリソースをクロスオリジンで読み込むのをブロックします Origin-Agent-Cluster: プロセス分離をオリジンベースに変更 Referrer-Policy:Refererヘッダーを制御します Strict-Transport-Security: ブラウザにHTTPSを優先するように指示します X-Content-Type-Options: MIMEスニッフィングを回避 X-DNS-Prefetch-Control: DNSプリフェッチを制御する X-Download-Options: ダウンロードを強制的に保存します (Internet Explorer のみ) X-Frame-Options:クリックジャッキング攻撃を軽減するレガシーヘッダー X-Permitted-Cross-Domain-Policies: AcrobatなどのAdobe製品のクロスドメイン動作を制御します X-Powered-By: ウェブサーバーに関する情報。単純な攻撃に利用される可能性があるため削除されました。 X-XSS-Protection: XSS攻撃を軽減しようとするレガシーヘッダーですが、事態を悪化させるため、Helmetはそれを無効にします。

🔐 セキュリティ関連 HTTPヘッダー解説