Web技術の基礎
ブラウザが、前に受け取った画像を、そのときの応答に付いていたETagの値をIf-None-Matchヘッダに入れて、もう一度要求した。サーバ上の画像が変わっていないときの、サーバの応答として正しいものはどれか。
- A200 OK を返し、前に送ったときと同じ内容でも、画像の本文をもう一度すべて送る
- B304 Not Modified を返して本文を送らず、ブラウザは保存した画像を使う
- C404 Not Found を返し、ブラウザに保存してある古い画像を消させて取得し直させる
答えと解説を見る
正解:B. 304 Not Modified を返して本文を送らず、ブラウザは保存した画像を使う
ETagは、資源の特定の版を表す識別子です。ブラウザはETagをIf-None-Matchに入れて「この版から変わっていれば送ってほしい」という条件付きのリクエストを送り、変わっていなければサーバは本文のない 304 Not Modified を返します。これで、確認の1往復だけで済み、画像のデータを送り直さずに済みます。変わっていれば、200 OK で新しい本文と新しいETagを返します。Cache-Control の max-age で決めた期間の中は、ブラウザはこの確認もせずに保存したものを使います。
- A. 画像が変わっていないので、本文を送り直す必要はありません。それを避けるのが条件付きのリクエストです。
- B. 正しい。304は「変わっていないので、保存してあるものを使ってよい」ことを示します。
- C. 404は資源が見つからないことを示すコードで、画像は存在しています。