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 de navegador
BCD tables only load in the browser
The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
Veja também
ETag
If-Unmodified-Since
If-Modified-Since
If-None-Match
416
Range Not Satisfiable
412
Precondition Failed