--- title: If-None-Match slug: Web/HTTP/Headers/If-None-Match tags: - Cabeçalho HTTP - Cabeçalho de requisição - HTTP - Referencia - Requisições Condicionais translation_of: Web/HTTP/Headers/If-None-Match ---
O cabeçalho de requisição HTTP If-None-Match
faz uma requisição condicional. Para os métodos {{HTTPMethod("GET")}} e {{HTTPMethod("HEAD")}}, o servidor irá mandar de volta o recurso requisitado, com um código de status {{HTTPStatus("200")}}, somente se ele não tiver um {{HTTPHeader("ETag")}} correspondendo as tags dadas pela requisição. Para outros métodos, a requisição será processada somente o recurso existente eventualmente não possuir nenhuma {{HTTPHeader("ETag")}} correspondente nos valores listados.
Quando a condição falha para métodos {{HTTPMethod("GET")}} e {{HTTPMethod("HEAD")}}, então o servidor deve returnar um código de status HTTP 304 (Not Modified). Para outros métodos que aplicam mudanças no lado do servidor, o código de status 412 (Precondition Failed) é utilizado. Note que o servidor gerando uma resposta 304 DEVE gerar qualquer um dos seguintes cabeçalhos que seriam enviados em uma resposta 200 (OK) para a mesma requisição: Cache-Control, Content-Location, Date, ETag, Expires, and Vary.
A comparação com a {{HTTPHeader("ETag")}} guardada usa o algoritmo de comparação fraco, significa que dois arquivos são considerados idênticos se o conteúdo é equivalente — eles não precisam ser idênticos byte por byte. Por exemplo, duas páginas que diferem pela data de sua geração no rodapé ainda assim serão consideradas como idênticas.
Quando usado em combinação com {{HTTPHeader("If-Modified-Since")}}, If-None-Match
tem precedência (se o servidor suporta isso).
Existem dois casos de uso comuns:
If-None-Match
usado com o valor *
pode ser utilizado para salvar um arquivo que não se sabia existir, garantindo que outro upload não tenha acontecido anteriormente, perdendo os dados do PUT anterior; esse problema é uma variação do problema de perda de atualização.Tipo de cabeçalho | {{Glossary("Request header")}} |
---|---|
{{Glossary("Forbidden header name")}} | não |
If-None-Match: "<etag_value>" If-None-Match: "<etag_value>", "<etag_value>", … If-None-Match: *
"675af34563dc-tr34"
). Elas podem ser prefixadas por W/
para indicar que o algoritmo de comparação fraco deve ser utilizado (Isso é inútil com If-None-Match
por ele utilizar somente este algoritmo).*
If-None-Match: "bfc13a64729c4290ef5b2c2730249c88ca92d82d" If-None-Match: W/"67ab43", "54ed21", "7892dd" If-None-Match: *
Especificação | Título |
---|---|
{{RFC("7232", "If-None-Match", "3.2")}} | Hypertext Transfer Protocol (HTTP/1.1): Conditional Requests |
{{Compat("http.headers.If-None-Match")}}
Not Modified
Precondition Failed