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 GETHEAD, 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 GETHEAD, đượ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-Match có 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

http
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ằng W/ để 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à false nế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ụ

http
If-Match: "bfc13a64729c4290ef5b2c2730249c88ca92d82d"

If-Match: "67ab43", "54ed21", "7892dd"

If-Match: *

Đặc tả

Thông số kỹ thuật
HTTP Semantics
# field.if-match

Khả năng tương thích trình duyệt

Xem thêm