このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docsコミュニティーについてもっと知り、仲間になるにはこちらから。
304 Not Modified
HTTP の304 Not Modified はリダイレクトレスポンスステータスコードで、リクエストされたリソースを再送する必要がないことを示します。
このレスポンスコードは、リクエストが条件付きのGET やHEAD リクエストにIf-None-Match もしくはIf-Modified-Since ヘッダーが付いており、条件が 'false' と評価された時に送信されます。これは、クライアントがキャッシュしたリソースがまだ有効であり、条件が 'true' と評価された場合、サーバーはリソースとともに200 OK レスポンスを送信したであろうことを確認します。詳細については、HTTP キャッシュを参照してください。
レスポンスには本体を含んではならず、200 レスポンスで送信されるであろう次のようなヘッダーを記載しなければなりません。
メモ:ブラウザーの開発者ツールのネットワークパネルの多くは、304 レスポンスにつながる追加のリクエストを作成するため、ローカルキャッシュへのアクセスが開発者から見えます。
In this article
ステータス
304 Not Modified例
>条件付きリクエストに対する 304 レスポンス
下記の例は、条件付きリクエストヘッダーつきのcurl を使用して作成されたGET リクエストを示しています。--http1.1 フラグは、読みやすくするために HTTP/1.1 プロトコルを強制するために使用されています。
最初のリクエストは、If-Modified-Since 条件を使用して未来の日付である 2050 年 11 月 21 日を設定しています。これはfalse と評価されるはずです。まだ現れていない時点以降にリソースが更新されることはありえないからです。
curl --http1.1 -I --header 'If-Modified-Since: Tue, 21 Nov 2050 08:00:00 GMT' \ https://developer.mozilla.org/en-US/これにより、次のような HTTP リクエストが発生します。
GET /en-US/ HTTP/1.1Host: developer.mozilla.orgUser-Agent: curl/8.7.1Accept: */*If-Modified-Since: Tue, 21 Nov 2050 08:00:00 GMTリソースがIf-Modified-Since ヘッダーのタイムスタンプ後に更新された場合、現在のリソースバージョンではレスポンスは200 OK となりるはずです。代わりに304 レスポンスを取得し、そのレスポンスにはETag、Age、Expires の各ヘッダーが含まれ、リソースのキャッシュされたバージョンが最新であることを示します。
HTTP/1.1 304 Not ModifiedDate: Wed, 28 Aug 2024 09:52:35 GMTExpires: Wed, 28 Aug 2024 10:01:53 GMTAge: 3279ETag: "b20a0973b226eeea30362acb81f9e0b3"Cache-Control: public, max-age=3600Vary: Accept-EncodingX-cache: hitAlt-Svc: clearそれでは、別のcurl コマンドを実行し、前回レスポンスで取得したetag 値をIf-None-Match 条件とともに使用します(このetag はサーバー上のリソースの最新バージョンであるため、304 Not Modified レスポンスが返されると予想されます)。
curl --http1.1 -I --header 'If-None-Match: "b20a0973b226eeea30362acb81f9e0b3"' \ https://developer.mozilla.org/en-US/これにより、次のような HTTP リクエストが発生します。
GET /en-US/ HTTP/1.1Host: developer.mozilla.orgUser-Agent: curl/8.7.1Accept: */*If-None-Match: "b20a0973b226eeea30362acb81f9e0b3"リクエスト時点ではetag の値が一致するため、エンティティタグは条件に合わず、304 レスポンスが返されます。
HTTP/1.1 304 Not ModifiedDate: Wed, 28 Aug 2024 10:36:35 GMTExpires: Wed, 28 Aug 2024 11:02:17 GMTAge: 662ETag: "b20a0973b226eeea30362acb81f9e0b3"Cache-Control: public, max-age=3600Vary: Accept-EncodingX-cache: hitAlt-Svc: clear仕様書
| Specification |
|---|
| HTTP Semantics> # status.304> |
互換性メモ
このレスポンスが永続的な接続上で誤って本文を含んだ場合、ブラウザーの動作はさまざまです。詳しくは204 No Content を参照してください。