読み方:さんまるよんノットモディファイド

304 Not Modified 【HTTP 304】

概要

304 Not Modified(HTTP 304)とは、WebサーバがWebブラウザなどのクライアントに送られる通知の一つで、要求されたコンテンツは前回送信以降更新されていないことを示すもの。クライアントのキャッシュ制御のために用いられる。

HTTPステータスコードとは

WebサーバとWebクライアントの間では「HTTP」(Hypertext Transfer Protocol)という通信規約(プロトコル)でデータ伝送を行っている。クライアントからの要求(リクエスト)に対してサーバは応答(レスポンス)を返すが、その際に現在の状態を示す「HTTPステータスコード」を通知する。

ステータスコードは3桁の番号と簡易なメッセージで表される。番号の最上位桁は分類、下2桁は識別番号である。100番台は「情報」(Informational)、200番台は「成功」(Success)、300番台は「転送」(Redirection)、400番台は「クライアントエラー」(Client Error)、500番台は「サーバエラー」(Server Error)を表している。

304 Not Modifiedとは

304番は転送通知の一種で、メッセージは “Not Modified”、すなわち「変更なし」である。クライアントへ一度送信したことがあるコンテンツについて、前回送信時から内容が変更されていないことを通知するもので、コンテンツ本体は送信しない。

Webブラウザなどには一度受信したコンテンツを保管しておき、次に必要になったときストレージから読み込む「キャッシュ」(cache)の仕組みがある。サーバはコンテンツの送信時、送信日時(Date)、最終更新日時(Last-Modified)、バージョン識別子(ETag)などをヘッダ中に記載しており、クライアントはこれを控えておく。

クライアントは同じコンテンツを再度要求する際、前回取得時に受け取ったこれらの情報をサーバに申告する。サーバは前回送信時から更新されているかを判断し、更新されていれば「200 OKステータスコードとともにコンテンツ本体を送り、更新されていなければ「304 Not Modified」のみを応答してコンテンツは送らない。

(2025.8.20更新)

HTTPステータスコード一覧

*1 302はHTTP/1.0では「Moved Temporarily」だった。
*2 413はHTTP/1.1では「Request Entity Too Long」、RFC 7231では「Payload Too Long」だった。
*3 414はHTTP/1.1では「Request-URI Too Long」だった。
*4 416はHTTP/1.1では「Requested Range Not Satisfiable」だった。
*5 418は1998年エイプリルフールのジョークRFC 2324で「I'm a teapot」として定義されていた。

他の用語辞典による「304 Not Modified」の解説 (外部サイト)