If-Match

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.

Заголовок HTTP-запроса If-Match делает запрос условным. Для методов GET и HEAD сервер отправляет запрошенный ресурс только в том случае, если он соответствует одному из перечисленных ETags. Для PUT и других небезопасных методов он будет загружать только ресурс в этом случае.

Сравнение с хранимым ETag использует сильный алгоритм сравнения, то есть два файла считаются одинаковыми байтами только байтом. Это ослабляется, когда префикс W/ используется перед ETag.

Существует два распространённых варианта использования:

  • Для методов GET и HEAD, используемых в сочетании с Range, он может гарантировать, что запрашиваемые новые диапазоны с того же ресурса, что и предыдущий. Если он не соответствует, то возвращается ответ 416 (Range Not Satisfiable).
  • Для других методов и, в частности, для PUT, If-Match может использоваться для предотвращения проблемы с потерянным обновлением. Он может проверить, не изменит ли изменение ресурса, которое пользователь хочет загрузить, другое изменение, которое было выполнено с момента извлечения исходного ресурса. Если запрос не может быть выполнен, возвращается ответ 412 (Precondition Failed).
Header type Request header
Forbidden header name no

Синтаксис

If-Match: <etag_value>
If-Match: <etag_value>, <etag_value>, …

Директивы

<etag_value>

Теги объектов, однозначно представляющие запрошенные ресурсы. Они представляют собой строку символов ASCII, помещённых между двойными кавычками (например, "675af34563dc-tr34") и могут быть префиксами W/, чтобы указать, что следует использовать слабый алгоритм сравнения.

*

Звёздочка представляет собой специальное значение, представляющее любой ресурс.

Примеры

If-Match: "bfc13a64729c4290ef5b2c2730249c88ca92d82d"

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

If-Match: *

Спецификации

Спецификация Название
RFC 7232, раздел 3.1: If-Match Hypertext Transfer Protocol (HTTP/1.1): Conditional Requests

Совместимость с браузерами

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
If-Match

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

Смотрите также