1. 給開發者的 Web 技術文件
  2. HTTP
  3. Reference
  4. HTTP 回應狀態碼
  5. 304 Not Modified

此頁面由社群從英文翻譯而來。了解更多並加入 MDN Web Docs 社群。

View in English Always switch to English

304 Not Modified

HTTP 304 Not Modified 重新導向回應狀態碼表示不需要重新傳送請求的資源。

此狀態碼會在請求為帶有 If-None-MatchIf-Modified-Since 標頭的 GETHEAD 條件請求,且條件判斷為「false」時傳送。這代表用戶端快取的資源仍然有效,如果條件為「true」則伺服器會回傳 200 OK 回應與資源。請參考 HTTP 快取以取得更多資訊。

此回應不得包含主體,且必須包含與等同 200 回應相同的標頭,例如:

備註:許多開發者工具的「網路」面板會創建多餘的請求,導致出現 304 回應,這樣開發人員就可以查看對本地緩存的訪問。

狀態

http
304 Not Modified

範例

針對條件請求的 304 回應

下方範例展示使用 curl 搭配條件請求標頭的 GET 請求。--http1.1 參數用於強制使用 HTTP/1.1 協定以便閱讀。

第一個請求使用 If-Modified-Since 條件,日期設為未來的 2050 年 11 月 21 日。這個條件必然為「false」,因為資源不可能在尚未發生的時間之後被更新:

bash
curl --http1.1 -I --header 'If-Modified-Since: 2050年11月21日 08:00:00 GMT' \
 https://developer.mozilla.org/zh-TW/

這會產生以下 HTTP 請求:

http
GET /zh-TW/ HTTP/1.1
Host: developer.mozilla.org
User-Agent: curl/8.7.1
Accept: */*
If-Modified-Since: 2050年11月21日 08:00:00 GMT

如果資源在 If-Modified-Since 標頭指定的時間之後有更新,伺服器會回傳 200 OK 及最新資源。否則,會收到如下的 304 回應,包含 ETagAgeExpires 等標頭,表示快取的資源仍然有效:

http
HTTP/1.1 304 Not Modified
Date: 2024年8月28日 09:52:35 GMT
Expires: 2024年8月28日 10:01:53 GMT
Age: 3279
ETag: "b20a0973b226eeea30362acb81f9e0b3"
Cache-Control: public, max-age=3600
Vary: Accept-Encoding
X-cache: hit
Alt-Svc: clear

現在使用上一個回應中的 etag 值,再次執行一個帶有 If-None-Match 條件的 curl 指令(由於這個 etag 是伺服器上該資源的當前版本,我們預期會收到 304 Not Modified 的回應):

bash
curl --http1.1 -I --header 'If-None-Match: "b20a0973b226eeea30362acb81f9e0b3"' \
 https://developer.mozilla.org/zh-TW/

這會產生以下 HTTP 請求:

http
GET /zh-TW/ HTTP/1.1
Host: developer.mozilla.org
User-Agent: curl/8.7.1
Accept: */*
If-None-Match: "b20a0973b226eeea30362acb81f9e0b3"

由於 etag 值在請求時相符,條件判斷失敗,因此會回傳 304 回應:

http
HTTP/1.1 304 Not Modified
Date: 2024年8月28日 10:36:35 GMT
Expires: 2024年8月28日 11:02:17 GMT
Age: 662
ETag: "b20a0973b226eeea30362acb81f9e0b3"
Cache-Control: public, max-age=3600
Vary: Accept-Encoding
X-cache: hit
Alt-Svc: clear

規範

Specification
HTTP Semantics
# status.304

相容性說明

瀏覽器若在持久連線上錯誤地包含主體,行為會有所不同。詳見 204 No Content

參見

Help improve MDN

Learn how to contribute

This page was last modified on by MDN contributors.

AltStyle によって変換されたページ (->オリジナル) /