Spec-Zone.ru › HTTP

Заголовки: 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API