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
eHEAD
, utilizado em combinação com o cabeçalhoRange
, ele pode garantir que novos intervalos requisitados venham do mesmo recurso ao invés do anterior. Se ele não corresponde, então uma resposta416
(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 resposta412
(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 porW/
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çalhoIf-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
ETag
If-Unmodified-Since
If-Modified-Since
If-None-Match
416
Range Not Satisfiable
412
Precondition Failed