---
title: If-Match
slug: Web/HTTP/Headers/If-Match
translation_of: Web/HTTP/Headers/If-Match
original_slug: Web/HTTP/Заголовки/If-Match
---
{{HTTPSidebar}}
Заголовок HTTP-запроса If-Match
делает запрос условным. Для методов {{HTTPMethod("GET")}} и {{HTTPMethod("HEAD")}} сервер отправляет запрошенный ресурс только в том случае, если он соответствует одному из перечисленных ETags. Для {{HTTPMethod("PUT")}} и других небезопасных методов он будет загружать только ресурс в этом случае.
Сравнение с хранимым {{HTTPHeader("ETag")}} использует сильный алгоритм сравнения, то есть два файла считаются одинаковыми байтами только байтом. Это ослабляется, когда префикс W/
используется перед ETag.
Существует два распространённых варианта использования:
- Для методов {{HTTPMethod("GET")}} и {{HTTPMethod("HEAD")}}, используемых в сочетании с {{HTTPHeader("Range")}}, он может гарантировать, что запрашиваемые новые диапазоны с того же ресурса, что и предыдущий. Если он не соответствует, то возвращается ответ {{HTTPStatus("416")}} (Range Not Satisfiable).
- Для других методов и, в частности, для {{HTTPMethod("PUT")}}, If-Match может использоваться для предотвращения проблемы с потерянным обновлением. Он может проверить, не изменит ли изменение ресурса, которое пользователь хочет загрузить, другое изменение, которое было выполнено с момента извлечения исходного ресурса. Если запрос не может быть выполнен, возвращается ответ {{HTTPStatus("412")}} (Precondition Failed).
Header type |
{{Glossary("Request header")}} |
{{Glossary("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", "If-Match", "3.1")}} |
Hypertext Transfer Protocol (HTTP/1.1): Conditional Requests |
Совместимость с браузером
{{Compat("http/headers/if-match")}}
Смотрите также
- {{HTTPHeader("ETag")}}
- {{HTTPHeader("If-Unmodified-Since")}}
- {{HTTPHeader("If-Modified-Since")}}
- {{HTTPHeader("If-None-Match")}}
- {{HTTPStatus("416")}}
Range Not Satisfiable
- {{HTTPStatus("412")}}
Precondition Failed