Spec-Zone.ru › HTTP

Если-нет-соответствия

Если-нет-соответствия

Заголовок HTTP-запроса If-None-Match делает запрос условным. Для методов GET и HEAD сервер вернёт запрошенный ресурс со статусом 200 только в том случае, если у него нет ETag, совпадающего с предоставленными. Для других методов запрос будет обработан только в том случае, если ETag существующего ресурса не совпадает ни с одним из перечисленных значений.

Когда условие не выполняется для методов GET и HEAD, сервер должен вернуть код состояния HTTP 304 (Не изменён). Для методов, применяющих изменения на стороне сервера, используется код состояния 412 (Условие не выполнено). Обратите внимание, что сервер, генерирующий ответ 304, ОБЯЗАН сгенерировать любые из следующих заголовков, которые были бы отправлены в ответе 200 (OK) на тот же запрос: Cache-Control, Content-Location, Date, ETag, Expires и Vary.

Сравнение сохранённого ETag использует алгоритм слабого сравнения, означающий, что два файла считаются идентичными, если их содержимое эквивалентно — они не обязаны быть идентичными байт в байт. Например, две страницы, которые отличаются датой создания в подвале, всё равно считаются идентичными.

При использовании в сочетании с If-Modified-Since, 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 Internet Explorer Opera Safari WebView Android Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet
If-None-Match
Да
12
Да
Да
Да
Да
Да
Да
Да
Да
Да
Да

См. также

  • ETag
  • If-Unmodified-Since
  • If-Modified-Since
  • If-Match
  • 304 Not Modified
  • 412 Precondition Failed

© 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-None-Match

Spec-Zone.ru

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