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

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
If-Match

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

Veja também