If-Match

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

O cabeçalho de requisição HTTP If-Match faz a requisição condicional. Para métodos GET e HEAD, o servidor irá mandar de volta o recurso requisitado somente se ele corresponde com uma das ETags listadas. Para PUT e outros métodos não-seguros, ele somente irá fazer o upload do recurso neste caso.

A comparação com a ETag guardada usa o algoritmo de comparação forte, significa dois arquivos são considerados idênticos byte a byte somente. Se a ETag listada com o prefixo W/ indicando a tag como uma entidade fraca, ele nunca irá combinar usando este algoritmo de comparação.

Existem dois casos de uso comuns:

  • Para os métodos GET e HEAD, utilizado em combinação com o cabeçalho Range, ele pode garantir que novos intervalos requisitados venham do mesmo recurso ao invés do anterior. Se ele não corresponde, então uma resposta 416 (Range Not Satisfiable) é retornarda.
  • Para outros métodos, e em particular para o método PUT, If-Match pode ser usado para previnir o problema de perde de atualização. Ele pode checar se a modificação de um recurso que o usuário que fazer o upload não sobrescreverá outra modificação que foi feita desde que o recurso original foi buscado. Se a requisição não puder ser completada, a resposta 412 (Precondition Failed) é retornada.
Tipo de cabeçalho Request header
Forbidden header name não

Sintaxe

If-Match: <etag_value>
If-Match: <etag_value>, <etag_value>, …

Diretivas

<etag_value>

Tags de entidade que representam unicamente os recursos requisitados. Eles são uma cadeia de caracteres ASCII colocados entre aspas duplas (como "675af34563dc-tr34"). Elas podem ser prefixadas por W/ para indicar que elas são "fracas", i.e. que elas representam o recurso semânticamente, mas não byte-por-byte. Entretanto, em um cabeçalho If-Match, tags de entidade fraca nunca irão corresponder.

*

O asterísco é um valor especial representando qualquer recurso.

Exemplos

If-Match: "bfc13a64729c4290ef5b2c2730249c88ca92d82d"

If-Match: "67ab43", "54ed21", "7892dd"

If-Match: *

Especificações

Especificação Título
RFC 7232, sessão 3.1: If-Match Hypertext Transfer Protocol (HTTP/1.1): Conditional Requests

Compatibilidade com navegadores

BCD tables only load in the browser

Veja também