Заголовки: If-None-Match
Заголовок If-None-Match
Базовая поддержка Широко доступно
Эта функция хорошо зарекомендовала себя и работает на множестве устройств и версий браузеров. Она доступна во всех браузерах с июля 2015 года.
HTTP If-None-Match заголовок запроса делает запрос условным. Сервер возвращает запрошенный ресурс методами GET и HEAD со статусом 200 только в том случае, если у него нет ETag, совпадающего с одним из значений в заголовке If-None-Match. Для других методов запрос будет обработан только в том случае, если ETag уже существующего ресурса не совпадает ни с одним из указанных значений.
Если условие не выполняется для методов GET и HEAD, сервер должен вернуть ответ 304 Not Modified и любые из следующих полей заголовка, которые были бы отправлены в ответе 200 на тот же запрос: Cache-Control, Content-Location, Date, ETag, Expires и Vary. Для методов, которые вносят изменения на стороне сервера, при невыполнении условия используется ответ 412 Precondition Failed.
При сравнении с сохранённым ETag используется алгоритм слабого сравнения: два файла считаются идентичными, если их содержимое эквивалентно — побайтовое совпадение не требуется. Например, две страницы, различающиеся датой создания в нижнем колонтитуле, всё равно будут считаться идентичными.
При использовании вместе с If-Modified-Since заголовок If-None-Match имеет приоритет, если сервер его поддерживает.
Есть два распространённых случая использования If-None-Match в запросах:
- Для методов
GETиHEAD— чтобы обновить кэшированную сущность, связанную с ETag. - Для других методов, в частности для
PUT,If-None-Matchсо значением*можно использовать, чтобы сохранить файл, только если он ещё не существует. Это гарантирует, что загрузка случайно не перезапишет другой файл и не приведёт к потере данных предыдущегоPUT; эта проблема является разновидностью проблемы потерянного обновления.
| Тип заголовка | Заголовок запроса |
|---|---|
| Запрещённый заголовок запроса | Нет |
Синтаксис
If-None-Match: "<etag_value>" If-None-Match: "<etag_value>", "<etag_value>", … If-None-Match: *
Директивы
<etag_value>-
Теги сущностей, однозначно идентифицирующие запрошенные ресурсы. Это строки из символов ASCII, заключённые в двойные кавычки (например,
"675af34563dc-tr34"); перед ними может стоятьW/, указывающий на использование алгоритма слабого сравнения (это бесполезно дляIf-None-Match, поскольку он использует только этот алгоритм). *-
Звёздочка — специальное значение, представляющее любой ресурс. Она полезна только при загрузке ресурса, обычно с помощью
PUT, чтобы проверить, не был ли ранее загружен другой ресурс с таким же идентификатором.
Примеры
If-None-Match: "bfc13a64729c4290ef5b2c2730249c88ca92d82d" If-None-Match: W/"67ab43", "54ed21", "7892dd" If-None-Match: *
Спецификации
| Спецификация |
|---|
| Семантика HTTP> # field.if-none-match> |
Совместимость с браузерами
| Для компьютеров | Для мобильных устройств | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome для Android | Firefox для Android | Opera для Android | Safari на iOS | Samsung Internet | WebView для Android | WebView для iOS | |
If-None-Match |
1 | 12 | 1 | 15 | 1 | 18 | 4 | 14 | 1 | 1.0 | 4.4 | 1 |
См. также
ETag-
If-Match,If-Modified-Since,If-Unmodified-Sinceзаголовки условных запросов -
304 Not Modified,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-None-Match