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 julho de 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
GETeHEAD, 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-Matchpode 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
Loading…
Veja também
ETagIf-Unmodified-SinceIf-Modified-SinceIf-None-Match416Range Not Satisfiable412Precondition Failed