304 Not Modified
Mã trạng thái phản hồi chuyển hướng HTTP 304 Not Modified cho biết rằng không cần truyền lại các tài nguyên được yêu cầu.
Mã phản hồi này được gửi khi yêu cầu là yêu cầu GET hoặc HEAD có điều kiện với tiêu đề If-None-Match hoặc If-Modified-Since và điều kiện đánh giá là 'false'.
Nó xác nhận rằng tài nguyên được client lưu đệm vẫn còn hợp lệ và máy chủ sẽ gửi phản hồi 200 OK với tài nguyên nếu điều kiện đánh giá là 'true'.
Xem Bộ đệm HTTP để biết thêm thông tin.
Phản hồi không được chứa thân và phải bao gồm các tiêu đề đã được gửi trong phản hồi 200 tương đương, chẳng hạn như:
Note:
Nhiều bảng điều khiển mạng của công cụ dành cho nhà phát triển của trình duyệt tạo ra các yêu cầu thừa dẫn đến phản hồi 304, để các nhà phát triển có thể thấy quyền truy cập vào bộ đệm cục bộ.
Trạng thái
304 Not Modified
Ví dụ
>Phản hồi 304 cho các yêu cầu có điều kiện
Các ví dụ dưới đây cho thấy các yêu cầu GET được thực hiện bằng curl với các tiêu đề yêu cầu có điều kiện.
Cờ --http1.1 được dùng để buộc giao thức HTTP/1.1 cho dễ đọc.
Yêu cầu đầu tiên sử dụng điều kiện If-Modified-Since với ngày trong tương lai là ngày 21 tháng 11 năm 2050.
Điều này phải đánh giá là false, vì tài nguyên không thể đã được cập nhật sau một thời điểm chưa xảy ra:
curl --http1.1 -I --header 'If-Modified-Since: Tue, 21 Nov 2050 08:00:00 GMT' \
https://mdn.go-mizu.dev/en-US/
Điều này sẽ dẫn đến yêu cầu HTTP sau:
GET /en-US/ HTTP/1.1
Host: developer.mozilla.org
User-Agent: curl/8.7.1
Accept: */*
If-Modified-Since: Tue, 21 Nov 2050 08:00:00 GMT
Phản hồi sẽ là 200 OK với phiên bản hiện tại của tài nguyên nếu tài nguyên đã được cập nhật sau dấu thời gian trong tiêu đề If-Modified-Since.
Thay vào đó, chúng ta nhận được phản hồi 304 bao gồm các tiêu đề ETag, Age và Expires, cho chúng ta biết phiên bản đệm của tài nguyên vẫn còn hợp lệ:
HTTP/1.1 304 Not Modified
Date: Wed, 28 Aug 2024 09:52:35 GMT
Expires: Wed, 28 Aug 2024 10:01:53 GMT
Age: 3279
ETag: "b20a0973b226eeea30362acb81f9e0b3"
Cache-Control: public, max-age=3600
Vary: Accept-Encoding
X-cache: hit
Alt-Svc: clear
Bây giờ chạy lệnh curl khác sử dụng giá trị etag từ phản hồi trước với điều kiện If-None-Match (vì etag này là phiên bản hiện tại của tài nguyên trên máy chủ, chúng ta mong đợi nhận được phản hồi 304 Not Modified):
curl --http1.1 -I --header 'If-None-Match: "b20a0973b226eeea30362acb81f9e0b3"' \
https://mdn.go-mizu.dev/en-US/
Điều này sẽ dẫn đến yêu cầu HTTP sau:
GET /en-US/ HTTP/1.1
Host: developer.mozilla.org
User-Agent: curl/8.7.1
Accept: */*
If-None-Match: "b20a0973b226eeea30362acb81f9e0b3"
Vì giá trị etag khớp tại thời điểm yêu cầu, entity tag không thỏa mãn điều kiện và trả về phản hồi 304:
HTTP/1.1 304 Not Modified
Date: Wed, 28 Aug 2024 10:36:35 GMT
Expires: Wed, 28 Aug 2024 11:02:17 GMT
Age: 662
ETag: "b20a0973b226eeea30362acb81f9e0b3"
Cache-Control: public, max-age=3600
Vary: Accept-Encoding
X-cache: hit
Alt-Svc: clear
Đặc tả
| Thông số kỹ thuật |
|---|
| HTTP Semantics> # status.304> |
Ghi chú tương thích
Hành vi trình duyệt khác nhau nếu phản hồi này chứa thân một cách không đúng trên các kết nối liên tục.
Xem 204 No Content để biết thêm chi tiết.