If-None-Match header
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Tiêu đề HTTP If-None-Match request header tạo ra yêu cầu có điều kiện.
Máy chủ trả về tài nguyên được yêu cầu trong các phương thức GET và HEAD với trạng thái 200, chỉ nếu nó không có ETag khớp với các ETag trong tiêu đề If-None-Match.
Đối với các phương thức khác, yêu cầu sẽ được xử lý chỉ nếu ETag của tài nguyên hiện có không khớp với bất kỳ giá trị nào được liệt kê.
Khi điều kiện thất bại cho các phương thức GET và HEAD, máy chủ phải trả về 304 Not Modified và bất kỳ trường tiêu đề nào sau đây lẽ ra đã được gửi trong phản hồi 200 cho cùng yêu cầu: Cache-Control, Content-Location, Date, ETag, Expires và Vary.
Đối với các phương thức áp dụng thay đổi phía máy chủ, 412 Precondition Failed được sử dụng khi điều kiện thất bại.
So sánh với ETag đã lưu sử dụng thuật toán so sánh yếu, nghĩa là hai tệp được coi là giống hệt nhau nếu nội dung tương đương — chúng không cần giống hệt nhau từng byte. Ví dụ: hai trang khác nhau ở ngày tạo của chúng trong phần chân trang vẫn được coi là giống hệt nhau.
Khi sử dụng kết hợp với If-Modified-Since, If-None-Match có ưu tiên nếu máy chủ hỗ trợ nó.
Có hai trường hợp sử dụng phổ biến của If-None-Match trong yêu cầu:
- Đối với các phương thức
GETvàHEAD, để cập nhật thực thể đã cache có ETag liên kết. - Đối với các phương thức khác, và đặc biệt là
PUT,If-None-Matchđược sử dụng với giá trị*có thể được sử dụng để lưu tệp chỉ nếu nó chưa tồn tại, đảm bảo rằng việc tải lên sẽ không vô tình ghi đè lên tải lên khác và mất dữ liệu củaPUTtrước; vấn đề này là biến thể của vấn đề mất cập nhật.
| Loại tiêu đề | Request header |
|---|---|
| Forbidden request header | Không |
Cú pháp
If-None-Match: "<etag_value>"
If-None-Match: "<etag_value>", "<etag_value>", …
If-None-Match: *
Chỉ thị
<etag_value>-
Entity tag xác định duy nhất các tài nguyên được yêu cầu. Chúng là một chuỗi các ký tự ASCII được đặt giữa dấu ngoặc kép (Như
"675af34563dc-tr34") và có thể được đặt tiền tố bằngW/để chỉ báo rằng thuật toán so sánh yếu nên được sử dụng (điều này vô ích vớiIf-None-Matchvì nó chỉ sử dụng thuật toán đó). *-
Dấu hoa thị là giá trị đặc biệt đại diện cho bất kỳ tài nguyên nào. Chúng chỉ hữu ích khi tải lên tài nguyên, thường với
PUT, để kiểm tra xem có tài nguyên nào khác với identity này đã được tải lên trước đó chưa.
Ví dụ
If-None-Match: "bfc13a64729c4290ef5b2c2730249c88ca92d82d"
If-None-Match: W/"67ab43", "54ed21", "7892dd"
If-None-Match: *
Đặc tả
| Specification |
|---|
| HTTP Semantics> # field.if-none-match> |
Khả năng tương thích trình duyệt
Xem thêm
ETag- Tiêu đề yêu cầu có điều kiện
If-Match,If-Modified-Since,If-Unmodified-Since - Mã trạng thái phản hồi
304 Not Modified,412 Precondition Failed