If-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-Match request header làm cho yêu cầu trở thành có điều kiện.
Máy chủ sẽ trả về tài nguyên cho các phương thức GET và HEAD, hoặc tải lên tài nguyên cho PUT và các phương thức không an toàn khác, chỉ nếu tài nguyên khớp với một trong các giá trị ETag trong tiêu đề yêu cầu If-Match.
Nếu điều kiện không khớp, phản hồi 412 Precondition Failed sẽ được trả về thay thế.
So sánh với ETag đã lưu sử dụng thuật toán so sánh mạnh, nghĩa là hai tệp được coi là giống hệt nhau từng byte.
Nếu ETag được liệt kê có tiền tố W/ chỉ báo entity tag yếu, thuật toán so sánh này sẽ không bao giờ khớp nó.
Có hai trường hợp sử dụng phổ biến:
- Đối với các phương thức
GETvàHEAD, được sử dụng kết hợp với tiêu đềRange, nó có thể đảm bảo rằng các phạm vi mới được yêu cầu đến từ cùng tài nguyên như cái trước đó. - Đối với các phương thức khác, và đặc biệt là
PUT,If-Matchcó thể được sử dụng để ngăn chặn vấn đề mất cập nhật. Nó có thể kiểm tra xem việc sửa đổi tài nguyên mà người dùng muốn tải lên sẽ không ghi đè lên thay đổi khác đã được thực hiện kể từ khi tài nguyên ban đầu được tải về.
| Loại tiêu đề | Request header |
|---|---|
| Forbidden request header | Không |
Cú pháp
If-Match: <etag_value>
If-Match: <etag_value>, <etag_value>, …
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"). Chúng có thể được đặt tiền tố bằngW/để chỉ báo rằng chúng "yếu", tức là biểu diễn tài nguyên về mặt ngữ nghĩa nhưng không phải từng byte. Tuy nhiên, trong tiêu đềIf-Match, entity tag yếu sẽ không bao giờ khớp. *-
Dấu hoa thị là giá trị đặc biệt đại diện cho bất kỳ tài nguyên nào. Lưu ý rằng điều này phải khớp là
falsenếu máy chủ gốc không có biểu diễn hiện tại cho tài nguyên đích.
Ví dụ
If-Match: "bfc13a64729c4290ef5b2c2730249c88ca92d82d"
If-Match: "67ab43", "54ed21", "7892dd"
If-Match: *
Đặc tả
| Specification |
|---|
| HTTP Semantics> # field.if-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-None-Match,If-Modified-Since,If-Unmodified-Since 412 Precondition Failed