Если-Соответствие
Если-Соответствие
Заголовок HTTP-запроса If-Match делает запрос условным.
Сервер вернёт запрошенные ресурсы только для методов GET и HEAD, или загрузит ресурс для методов PUT и других методов, не являющихся безопасными, если ресурс соответствует одному из перечисленных значений ETag. Если условие не соответствует, возвращается ответ 412 (Ошибка условия).
Сравнение сохранённого ETag использует алгоритм сильного сравнения, означающий, что два файла считаются идентичными только байт за байтом. Если перечисленный ETag имеет префикс W/, указывающий на слабый тег сущности, этот алгоритм сравнения никогда не будет с ним совпадать.
Есть два распространённых случая использования:
- Для методов
GETиHEAD, используемых в сочетании с заголовкомRange, можно гарантировать, что новые запрошенные диапазоны получены из того же ресурса, что и предыдущий. - Для других методов, и особенно для
PUT,If-Matchможно использовать для предотвращения проблемы «потерянного обновления». Он может проверить, не перекроет ли изменение ресурса, которое пользователь хочет загрузить, другое изменение, которое было выполнено с момента извлечения исходного ресурса.
| Тип заголовка | Заголовок запроса |
|---|---|
| Запрещённое имя заголовка | нет |
Синтаксис
If-Match: <etag_value> If-Match: <etag_value>, <etag_value>, …
Директивы
<etag_value>-
Теги сущности, уникально представляющие запрошенные ресурсы. Это строка ASCII-символов, заключённая в двойные кавычки (например,
"675af34563dc-tr34"). Они могут быть префиксомW/для обозначения «слабых», то есть представляющих ресурс семантически, но не байт за байтом. Однако в заголовкеIf-Matchслабые теги сущностей никогда не будут совпадать. *-
Звёздочка — специальное значение, представляющее любой ресурс. Обратите внимание, что это должно соответствовать
false, если исходный сервер не имеет текущего представления для целевого ресурса.
Примеры
If-Match: "bfc13a64729c4290ef5b2c2730249c88ca92d82d" If-Match: "67ab43", "54ed21", "7892dd" If-Match: *
Спецификации
| Спецификация |
|---|
| Семантика HTTP # field.if-match |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | WebView Android | Chrome Android | Firefox for Android | Opera Android | Safari на IOS | Samsung Internet | |
If-Match |
Да |
12 |
Да |
Да |
Да |
Да |
Да |
Да |
Да |
Да |
Да |
Да |
См. также
© 2005–2022 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/If-Match