If-Match

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 de navegador

Update compatibility data on GitHub
DesktopMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung Internet
If-MatchChrome Full support YesEdge Full support 12Firefox Full support YesIE Full support YesOpera Full support YesSafari Full support YesWebView Android Full support YesChrome Android Full support YesFirefox Android Full support YesOpera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yes

Legend

Full support  
Full support

Veja também