Заголовки: If-Match
Заголовок If-Match
Базовая поддержка Широко доступно
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и во многих версиях браузеров. Она поддерживается браузерами с июля 2015 года.
HTTP If-Match заголовок запроса делает запрос условным. Сервер возвращает ресурсы для методов GET и HEAD или загружает ресурс для метода PUT и других небезопасных методов, только если ресурс совпадает с одним из значений ETag в заголовке запроса If-Match. Если условие не выполнено, вместо этого возвращается ответ 412 Precondition Failed.
Сравнение с сохранённым 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 | Opera | Safari | Chrome для Android | Firefox для Android | Opera для Android | Safari для iOS | Samsung Internet | WebView для Android | WebView для iOS | |
If-Match |
1 | 12 | 1 | 15 | 1 | 18 | 4 | 14 | 1 | 1.0 | 4.4 | 1 |
См. также
ETag-
If-None-Match,If-Modified-Since,If-Unmodified-Since— заголовки условного запроса 412 Precondition Failed
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/If-Match