Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Várias operações de serviço Blob suportam o uso de cabeçalhos condicionais. Você pode especificar cabeçalhos condicionais para realizar uma operação apenas quando uma condição especificada for atendida.
O serviço Blob segue a especificação do protocolo HTTP/1.1 para cabeçalhos condicionais.
Cabeçalhos Condicionais Suportados
Os cabeçalhos condicionais suportados são descritos na tabela a seguir.
| Cabeçalho condicional | Description |
|---|---|
If-Modified-Since |
Um DateTime valor. O formato de data segue o RFC 1123. Para mais informações, veja Representação de valores de data-hora em cabeçalhos. Especifique esse cabeçalho para realizar a operação somente se o recurso foi modificado desde o tempo especificado. |
If-Unmodified-Since |
Um DateTime valor. O formato de data segue o RFC 1123. Para mais informações, veja Representação de valores de data-hora em cabeçalhos. Especifique esse cabeçalho para realizar a operação somente se o recurso não foi modificado antes da data/hora especificada. |
If-Match |
Um valor ETag. Especifique esse cabeçalho para executar a operação somente se a ETag do recurso corresponder ao valor especificado. Para as versões de 2011-08-18 em diante, o ETag pode ser especificado entre aspas. |
If-None-Match |
Um valor ETag ou o caractere curinga (*). Especifique esse cabeçalho para realizar a operação somente se o ETag do recurso não corresponder ao valor especificado. Para as versões de 2011-08-18 em diante, o ETag pode ser especificado entre aspas. Especifique o caractere coringa (*) para realizar a operação somente se o recurso não existir, e falhe a operação se ele existir. |
Especificação de cabeçalhos condicionais para operações de leitura de serviço de blob na versão 2013-08-15 ou posterior
A partir da versão de 2013-08-15, as operações Get Blob e Get Blob Properties suportam múltiplos cabeçalhos condicionais. Você pode especificar qualquer combinação de cabeçalhos condicionais suportados. O serviço Blob avalia essas condições de acordo com a seguinte expressão:
If-Match && If-Unmodified-Since && (If-None-Match || If-Modified-Since)
Você também pode fornecer múltiplos valores separados por vírgulas para If-Match e If-None-Match. Se você especificar múltiplos valores para If-Match, então o serviço Blob realiza uma operação lógica OR em todos os valores fornecidos antes de avaliar toda a expressão. Se você especificar múltiplos valores para if-None-Match, então o serviço realiza uma operação lógica AND antes de avaliar toda a expressão. Especificar múltiplos valores para If-Modified-Since e If-Unmodified-Since não é suportado resulta no código de erro 400 (Bad Request).
Esse recurso é ativado para cumprir a especificação HTTP/1.1. Também atende a cenários em que uma Rede de Entrega de Conteúdo (CDN) ou servidor proxy adiciona cabeçalhos condicionais adicionais a uma solicitação em voo. Os exemplos a seguir ilustram várias combinações diferentes de cabeçalhos condicionais.
Exemplo 1:
Considere uma solicitação Get Blob contendo os If-Match cabeçalhos e If-Modified-Since . A tabela a seguir indica o resultado se os cabeçalhos forem avaliados individualmente, e o resultado se forem avaliados em combinação.
| Cabeçalhos condicionais | Resultado se avaliado individualmente | Resultado se avaliado em combinação |
|---|---|---|
If-Match |
412 (Pré-condição Falhada) | 412 (Pré-condição Falhada) |
If-Modified-Since |
200 (OK) | 412 (Pré-condição Falhada) |
If-Match |
412 (Pré-condição Falhada) | 412 (Pré-condição Falhada) |
If-Modified-Since |
304 (Não Modificado) | 412 (Pré-condição Falhada) |
If-Match |
200 (OK) | 200 (OK) |
If-Modified-Since |
200 (OK) | 200 (OK) |
If-Match |
200 (OK) | 304 (Não Modificado) |
If-Modified-Since |
304 (Não Modificado) | 304 (Não Modificado) |
Exemplo 2:
Considere uma requisição contendo If-None-Match e If-Modified-Since cabeçalhos.
| Cabeçalhos condicionais | Resultado se avaliado individualmente | Resultado se avaliado em combinação |
|---|---|---|
If-None-Match |
304 (Não Modificado) | 200 (OK) |
If-Modified-Since |
200 (OK) | 200 (OK) |
If-None-Match |
200 (OK) | 200 (OK) |
If-Modified-Since |
200 (OK) | 200 (OK) |
If-None-Match |
200 (OK) | 200 (OK) |
If-Modified-Since |
304 (Não Modificado) | 200 (OK) |
If-None-Match |
304 (Não Modificado) | 304 (Não Modificado) |
If-Modified-Since |
304 (Não Modificado) | 304 (Não Modificado) |
Exemplo 3:
Considere uma solicitação contendo If-Modified-Since, If-Match, e If-Unmodified-Since cabeçalhos.
| Cabeçalhos condicionais | Resultado se avaliado individualmente | Resultado se avaliado em combinação |
|---|---|---|
If-Modified-Since |
200 (OK) | 412 (Pré-condição Falhada) |
If-Match |
412 (Pré-condição Falhada) | 412 (Pré-condição Falhada) |
If-Unmodified-Since |
200 (OK) | 412 (Pré-condição Falhada) |
If-Modified-Since |
200 (OK) | 412 (Pré-condição Falhada) |
If-Match |
200 (OK) | 412 (Pré-condição Falhada) |
If-Unmodified-Since |
412 (Pré-condição Falhada) | 412 (Pré-condição Falhada) |
If-Modified-Since |
304 (Não Modificado) | 412 (Pré-condição Falhada) |
If-Match |
200 (OK) | 412 (Pré-condição Falhada) |
If-Unmodified-Since |
412 (Pré-condição Falhada) | 412 (Pré-condição Falhada) |
If-Modified-Since |
304 (Não Modificado) | 304 (Não Modificado) |
If-Match |
200 (OK) | 304 (Não Modificado) |
If-Unmodified-Since |
200 (OK) | 304 (Não Modificado) |
Exemplo 4:
Considere uma solicitação contendo If-Modified-Since, If-None-Match, If-Unmodified-Since, e If-Match cabeçalhos.
| Combinação | Código de status http individual | Obtenha o resultado do status Blob |
|---|---|---|
If-Modified-Since |
200 (OK) | 200 (OK) |
If-None-Match |
200 (OK) | 200 (OK) |
If-Unmodified-Since |
200 (OK) | 200 (OK) |
If-Match |
200 (OK) | 200 (OK) |
If-Modified-Since |
200 (OK) | 412 (Pré-condição Falhada) |
If-None-Match |
304 (Não Modificado) | 412 (Pré-condição Falhada) |
If-Unmodified-Since |
412 (Pré-condição Falhada) | 412 (Pré-condição Falhada) |
If-Match |
200 (OK) | 412 (Pré-condição Falhada) |
If-Modified-Since |
200 (OK) | 200 (OK) |
If-None-Match |
304 (Não Modificado) | 200 (OK) |
If-Unmodified-Since |
200 (OK) | 200 (OK) |
If-Match |
200 (OK) | 200 (OK) |
If-Modified-Since |
304 (Não Modificado) | 412 (Pré-condição Falhada) |
If-None-Match |
200 (OK) | 412 (Pré-condição Falhada) |
If-Unmodified-Since |
200 (OK) | 412 (Pré-condição Falhada) |
If-Match |
412 (Pré-condição Falhada) | 412 (Pré-condição Falhada) |
If-Modified-Since |
304 (Não Modificado) | 412 (Pré-condição Falhada) |
If-None-Match |
200 (OK) | 412 (Pré-condição Falhada) |
If-Unmodified-Since |
412 (Pré-condição Falhada) | 412 (Pré-condição Falhada) |
If-Match |
412 (Pré-condição Falhada) | 412 (Pré-condição Falhada) |
If-Modified-Since |
304 (Não Modificado) | 200 (OK) |
If-None-Match |
200 (OK) | 200 (OK) |
If-Unmodified-Since |
200 (OK) | 200 (OK) |
If-Match |
200 (OK) | 200 (OK) |
If-Modified-Since |
304 (Não Modificado) | 412 (Pré-condição Falhada) |
If-None-Match |
304 (Não Modificado) | 412 (Pré-condição Falhada) |
If-Unmodified-Since |
412 (Pré-condição Falhada) | 412 (Pré-condição Falhada) |
If-Match |
200 (OK) | 412 (Pré-condição Falhada) |
Especifique cabeçalhos condicionais para operações de leitura em versões anteriores a 15-08-2013 e para operações de escrita (todas as versões)
Ao chamar operações de leitura do serviço Blob (Get Blob e Get Blob Properties) com versões anteriores a 15-08-2013, e ao chamar qualquer operação de escrita independentemente da versão, tenha em mente as seguintes considerações:
Se uma solicitação especificar tanto os cabeçalhos e
If-None-MatchIf-Modified-Sincequant, a solicitação é avaliada com base nos critérios especificados emIf-None-Match.Se uma solicitação especificar tanto os cabeçalhos e
If-MatchIf-Unmodified-Sincequant, a solicitação é avaliada com base nos critérios especificados emIf-Match.Exceto pelas duas combinações de cabeçalhos condicionais listadas anteriormente, uma solicitação pode especificar apenas um cabeçalho condicional. Especificar mais de um cabeçalho condicional resulta no código de status 400 (
Bad Request).Se uma resposta incluir um ETag, verifique a versão da solicitação e da resposta antes de processar o ETag. Por exemplo, a versão 2011-08-18 e posteriores retornam um ETag citado, mas versões antigas não. Certifique-se de que sua candidatura possa processar ambos os formatos ETag antes que sejam avaliados.
O RFC 2616 permite múltiplos valores ETag em um único cabeçalho, mas requisições ao serviço Blob só podem incluir um valor ETag. Especificar mais de um valor ETag resulta no código de status 400 (
Bad Request).
Operações que suportam cabeçalhos condicionais
As operações que suportam cabeçalhos condicionais são descritas na tabela a seguir.
| Operação REST | Tipo de operação | Cabeçalhos condicionais suportados |
|---|---|---|
|
Acrescentar Bloco (versão 2015-02-21 e posterior) |
Escrever |
Se-Modificado-Já Se-Não-Modificado-Já If-Match Se-Nenhum-Combinação x-ms-if-tags |
|
Adicionar Bloco da URL (versão 2018-11-09 e posterior) |
Escrever |
Se-Modificado-Já Se-Não-Modificado-Já If-Match Se-Nenhum-Combinação x-ms-if-tags |
| Copiar Blob | Ler e Gravar | Para as condições no blob de destino: - Se-Modificado-Já - Se-Não-Modificado-Já - If-Match - Se-Nenhum-Combinação - x-ms-if-tags Para condições no blob de origem: - x-ms-source-if-modified-since - x-ms-source-if-unmodified-since - x-ms-source-if-match - x-ms-source-if-none-match - x-ms-source-if-tags |
| Excluir Blob | Escrever |
Se-Modificado-Já Se-Não-Modificado-Já If-Match Se-Nenhum-Combinação x-ms-if-tags |
| Excluir Contêiner | Escrever |
Se-Modificado-Já Se-Não-Modificado-Já |
| Pega o Blob | Leitura |
Se-Modificado-Já Se-Não-Modificado-Já If-Match Se-Nenhum-Combinação x-ms-if-tags |
| Obter metadados do blob | Leitura |
Se-Modificado-Já Se-Não-Modificado-Já If-Match Se-Nenhum-Combinação x-ms-if-tags |
| Obter propriedades de blob | Leitura |
Se-Modificado-Já Se-Não-Modificado-Já If-Match Se-Nenhum-Combinação x-ms-if-tags |
|
Obter marcas de blob |
Leitura |
X-ms-if-tags (versão 2019-12-12 e posterior) Para as condições do blob (versão 2025-11-05 e posteriores): - x-ms-blob-se-modificado-desde - x-ms-blob-se-não modificado-desde - x-ms-blob-if-match - x-ms-blob-se-nenhum-corresponder |
| Obtenha a lista de bloqueio | Leitura | x-ms-if-tags |
| Obtenha Intervalos de Páginas | Leitura |
Se-Modificado-Já Se-Não-Modificado-Já If-Match Se-Nenhum-Combinação x-ms-if-tags |
| Concessão de blob | Escrever |
Se-Modificado-Já Se-Não-Modificado-Já If-Match Se-Nenhum-Combinação x-ms-if-tags |
| Contêiner de Aluguel | Escrever |
Se-Modificado-Já Se-Não-Modificado-Já |
| Colocar Blob a partir da URL | Escrever |
Se-Modificado-Já Se-Não-Modificado-Já If-Match Se-Nenhum-Combinação Para condições no blob de origem: - x-ms-source-If-Modified-Since - x-ms-source-if-Unmodified-Since - x-ms-source-If-Match - x-ms-source-If-None-Match |
| Colocar Blob | Escrever |
Se-Modificado-Já Se-Não-Modificado-Já If-Match Se-Nenhum-Combinação x-ms-if-tags |
|
Colocar Bloquear a partir da URL (versão 2018-03-28 e posterior) |
Escrever |
x-ms-source-If-Modified-Since x-ms-source-If-Unmodified-Since x-ms-source-If-Match x-ms-source-If-None-Match |
| Lista de bloqueio de put | Escrever |
Se-Modificado-Já Se-Não-Modificado-Já If-Match Se-Nenhum-Combinação x-ms-if-tags |
| Colocar Página | Escrever |
Se-Modificado-Já Se-Não-Modificado-Já If-Match Se-Nenhum-Combinação x-ms-if-tags |
|
Coloque a página a partir da URL (versão 2018-11-09 e posterior) |
Escrever |
Se-Modificado-Já Se-Não-Modificado-Já If-Match Se-Nenhum-Combinação x-ms-if-tags |
| Definir Metadados de Blob | Escrever |
Se-Modificado-Já Se-Não-Modificado-Já If-Match Se-Nenhum-Combinação x-ms-if-tags |
| Definir Propriedades do Blob | Escrever |
Se-Modificado-Já Se-Não-Modificado-Já If-Match Se-Nenhum-Combinação x-ms-if-tags |
| Definir ACL do contêiner | Escrever |
Se-Modificado-Já Se-Não-Modificado-Já |
| Metadados do Contêiner Definir | Escrever | Se-Modificado-Já |
|
Definir marcas de blob |
Escrever |
X-ms-if-tags (versão 2019-12-12 e posterior) Para as condições do blob (versão 2025-11-05 e posteriores): - x-ms-blob-se-modificado-desde - x-ms-blob-se-não modificado-desde - x-ms-blob-if-match - x-ms-blob-se-nenhum-corresponder |
| Definir Camada do Blob | Escrever | x-ms-if-tags |
| Snapshot Blob | Leitura |
Se-Modificado-Já Se-Não-Modificado-Já If-Match Se-Nenhum-Combinação x-ms-if-tags |
| Definir Política de Imutabilidade do Blob | Escrever | Se-Não-Modificado-Já |
As seguintes operações de dados de serviço Blob atualmente não suportam cabeçalhos condicionais:
Códigos de resposta HTTP para operações que suportam cabeçalhos condicionais
Se a solicitação incluir um cabeçalho condicional e o recurso solicitado não atender à condição especificada, o serviço Blob retorna um código de resposta HTTP. Os códigos de resposta retornados estão de acordo com a especificação do protocolo HTTP/1.1 (RFC 2616).
Métodos na biblioteca cliente Azure .NET convertem esses códigos de resposta a erro em um objeto StorageException.
Leia Operações
A tabela a seguir indica os códigos de resposta retornados para uma condição não satisfeita para cada cabeçalho condicional quando a operação é uma operação de leitura. As operações de leitura usam os verbos GET ou HEAD.
| Cabeçalho condicional | Código de resposta caso a condição não seja cumprida |
|---|---|
If-Modified-Since |
Não Modificado (304 (Não Modificado)) |
If-Unmodified-Since |
Pré-condição Falhou (412 (Pré-condição Falhou)) |
If-Match |
Pré-condição Falhou (412 (Pré-condição Falhou)) |
If-None-Match |
Não Modificado (304 (Não Modificado)) |
Consulte os exemplos anteriores para obter resultados ao usar múltiplos cabeçalhos com versões de 2013-08-15 ou posteriores.
Operações de Escrita
A tabela a seguir indica os códigos de resposta retornados para uma condição não satisfeita para cada cabeçalho condicional quando a operação é uma operação de escrita. As operações de escrita usam os verbos PUT ou DELETE.
| Cabeçalho condicional | Código de resposta caso a condição não seja cumprida |
|---|---|
If-Modified-Since |
Pré-condição Falhou (412 (Pré-condição Falhou)) |
If-Unmodified-Since |
Pré-condição Falhou (412 (Pré-condição Falhou)) |
If-Match |
Pré-condição Falhou (412 (Pré-condição Falhou)) |
If-None-Match |
Pré-condição Falhou (412 (Pré-condição Falhou)) |
Operações de cópia
A tabela a seguir indica os códigos de resposta retornados para uma condição não satisfeita para cada cabeçalho condicional quando a operação é uma operação de cópia. A operação Copy Blob usa os verbos PUT.
| Cabeçalho condicional | Código de resposta caso a condição não seja cumprida |
|---|---|
If-Modified-Since |
Pré-condição Falhou (412 (Pré-condição Falhou)) |
If-Unmodified-Since |
Pré-condição Falhou (412 (Pré-condição Falhou)) |
If-Match |
Pré-condição Falhou (412 (Pré-condição Falhou)) |
If-None-Match |
Pré-condição Falhou (412 (Pré-condição Falhou)) |
x-ms-source-if-modified-since |
Pré-condição Falhou (412 (Pré-condição Falhou)) |
x-ms-source-if-unmodified-since |
Pré-condição Falhou (412 (Pré-condição Falhou)) |
x-ms-source-if-match |
Pré-condição Falhou (412 (Pré-condição Falhou)) |
x-ms-source-if-none-match |
Pré-condição Falhou (412 (Pré-condição Falhou)) |
Tags: Operações Condicionais
Além dos cabeçalhos condicionais HTTP padrão suportados pelo serviço Blob, várias operações também suportam condições contra as tags em um recurso blob.
| Cabeçalho condicional | Description |
|---|---|
x-ms-if-tags |
Versão 2019-12-12 e posteriores. Um TagsPredicate valor. Especifique esse cabeçalho para realizar a operação apenas se o predicado for avaliado contra true as tags do blob. |
x-ms-source-if-tags |
Versão 2019-12-12 e posteriores. Vale apenas para Copy Blob. Um TagsPredicate valor. Especifique este cabeçalho para realizar a operação somente se o predicado for avaliado contra true as tags do blob de origem. |
Se o x-ms-if-tags cabeçalho condicional ou x-ms-source-if-tags estiver presente em uma requisição e o TagsPredicate avaliar para false, o serviço Blob retorna o código de erro 412 (Pré-condição Falhada) para a operação.
O chamador deve ter permissão para ler as tags em um blob para usar os x-ms-if-tags cabeçalhos condicionais de OU x-ms-source-if-tags .
Tags: Sintaxe de Predicados
O serviço Blob suporta um subconjunto da gramática da cláusula ANSI SQL WHERE para o valor do TagsPredicate cabeçalho. São suportados os seguintes operadores:
| Operator | Description | Example |
|---|---|---|
= |
Igual | Status = 'In Progress' |
<> |
Não igual | Status <> 'Done' |
> |
Maior que | LastModified > '2018-06-18 20:51:26Z' |
>= |
Maior ou igual | Priority >= '05' |
< |
Menor que | Age < '032' |
<= |
Inferior ou igual | Reviewer <= 'Smith' |
AND |
Lógico e | Name > 'C' AND Name < 'D'Age > '032' AND Age < '100' |
OR |
Lógico ou | Status = 'Done' or LastModified > '2018-06-18 20:51:26Z' |
Todos os valores de tag são strings, e os operadores relacionais binários suportados usam uma ordenação lexicográfica dos valores da tag. Para suportar tipos de dados sem cadeia, incluindo números e datas, é necessário preencher apropriado e formatação ordenável. Os valores das etiquetas devem estar incluídos entre aspas simples.
Se os nomes das tags forem identificadores SQL comuns, eles podem estar presentes sem escapar. Se contêm caracteres especiais, devem ser delimitados com aspas duplas, como "TagName" = 'TagValue'.
Expressões podem incluir comparações para múltiplos nomes e valores de tags. Parênteses (( e )) podem ser usados para agrupar expressões lógicas e controlar a ordem canônica de operação. A TagsPredicate pode incluir no máximo 10 operações lógicas.
O serviço de armazenamento rejeita qualquer requisição que contenha uma expressão inválida com código de erro 400 (Solicitação Inválida).