Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Várias operações de serviço Blob suportam a utilização de cabeçalhos condicionais. Pode especificar cabeçalhos condicionais para realizar uma operação apenas quando uma condição especificada for cumprida.
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 seguinte.
| Cabeçalho condicional | Description |
|---|---|
If-Modified-Since |
Um valor de DateTime. O formato de data segue o RFC 1123. Para mais informações, veja Representação dos valores de data-hora em cabeçalhos. Especifique este cabeçalho para realizar a operação apenas se o recurso tiver sido modificado desde o tempo especificado. |
If-Unmodified-Since |
Um valor de DateTime. O formato de data segue o RFC 1123. Para mais informações, veja Representação dos valores de data-hora em cabeçalhos. Especifique este cabeçalho para realizar a operação apenas se o recurso não tiver sido 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 e posteriores, o ETag pode ser especificado entre aspas. |
If-None-Match |
Um valor ETag ou o caractere curinga (*). Especifique este cabeçalho para realizar a operação apenas se o ETag do recurso não corresponder ao valor especificado. Para as versões de 2011-08-18 e posteriores, o ETag pode ser especificado entre aspas. Especifique o carácter coringa (*) para realizar a operação apenas se o recurso não existir, e falhar a operação se existir. |
Especificação de cabeçalhos condicionais para operações de leitura de serviço blob na versão 2013-08-15 ou posterior
A partir da versão 2013-08-15, as operações Get Blob e Get Blob Properties suportam múltiplos cabeçalhos condicionais. Pode especificar qualquer combinação de cabeçalhos condicionais suportados. O serviço Blob avalia estas condições de acordo com a seguinte expressão:
If-Match && If-Unmodified-Since && (If-None-Match || If-Modified-Since)
Também pode fornecer múltiplos valores separados por vírgulas para If-Match e If-None-Match. Se 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 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).
Esta funcionalidade está ativada para cumprir a especificação HTTP/1.1. Também se adapta a cenários em que uma Rede de Entrega de Conteúdos (CDN) ou um servidor proxy adiciona cabeçalhos condicionais adicionais a um pedido em voo. Os exemplos seguintes ilustram várias combinações diferentes de cabeçalhos condicionais.
Exemplo 1:
Considere um pedido Get Blob contendo os If-Match cabeçalhos e.If-Modified-Since A tabela seguinte indica o resultado se os cabeçalhos forem avaliados individualmente, e o resultado se forem avaliados em conjunto.
| 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 um pedido 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 um pedido 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 um pedido contendo If-Modified-Since, If-None-Match, If-Unmodified-Since, e If-Match cabeçalhos.
| Combinação | Código de estado http individual | Obter o resultado do estado 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) |
Especificar cabeçalhos condicionais para operações de leitura em versões anteriores a 2013-08-15, 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 2013-08-15, e ao chamar qualquer operação de escrita independentemente da versão, tenha em mente as seguintes considerações:
Se um pedido especificar ambos os
If-None-Matchcabeçalhos eIf-Modified-Since, o pedido é avaliado com base nos critérios especificados emIf-None-Match.Se um pedido especificar ambos os
If-Matchcabeçalhos eIf-Unmodified-Since, o pedido é avaliado com base nos critérios especificados emIf-Match.Exceto pelas duas combinações de cabeçalhos condicionais listadas anteriormente, um pedido pode especificar apenas um único cabeçalho condicional. Especificar mais do que um cabeçalho condicional resulta no código de estado 400 (
Bad Request).Se uma resposta incluir um ETag, verifique a versão do pedido e da resposta antes de processar o ETag. Por exemplo, a versão 2011-08-18 e posteriores devolvem um ETag cotado, mas versões mais antigas não. Garante que a tua candidatura pode processar ambos os formatos ETag antes de serem avaliados.
O RFC 2616 permite múltiplos valores ETag num único cabeçalho, mas os pedidos ao serviço Blob só podem incluir um valor ETag. Especificar mais do que um valor ETag resulta no código de estado 400 (
Bad Request).
Operações que suportam cabeçalhos condicionais
As operações que suportam cabeçalhos condicionais são descritas na tabela seguinte.
| Operação REST | Tipo de operação | Cabeçalhos condicionais suportados |
|---|---|---|
|
Bloco Acrescentar (versão 2015-02-21 e posteriores) |
Escreve |
Se-Modificado-Já Se-Não-Modificado-Desde If-Match Se-Nenhum-Jogo x-ms-if-tags |
|
Adicionar Bloco a partir da URL (versão 2018-11-09 e posteriores) |
Escreve |
Se-Modificado-Já Se-Não-Modificado-Desde If-Match Se-Nenhum-Jogo x-ms-if-tags |
| Copiar Blob | Ler e escrever | Para as condições no blob de destino: - Se-Modificado-Já - Se-Não-Modificado-Desde - If-Match - Se-Nenhum-Jogo - 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 |
| Eliminar Blob | Escreve |
Se-Modificado-Já Se-Não-Modificado-Desde If-Match Se-Nenhum-Jogo x-ms-if-tags |
| Excluir contêiner | Escreve |
Se-Modificado-Já Se-Não-Modificado-Desde |
| Apanha o Blob | Leitura |
Se-Modificado-Já Se-Não-Modificado-Desde If-Match Se-Nenhum-Jogo x-ms-if-tags |
| Obter metadados de Blob | Leitura |
Se-Modificado-Já Se-Não-Modificado-Desde If-Match Se-Nenhum-Jogo x-ms-if-tags |
| Get Blob Properties (Obter Propriedades do Blob) | Leitura |
Se-Modificado-Já Se-Não-Modificado-Desde If-Match Se-Nenhum-Jogo x-ms-if-tags |
|
Obter Etiquetas de Blob |
Leitura |
x-ms-if-tags (versão 2019-12-12 e posteriores) Para as condições no blob (versão 2025-11-05 e posteriores): - x-ms-blob-se-modificado-desde - x-ms-blob-if-unmodified-since - x-ms-blob-se-corresponder - x-ms-blob-se-nenhum-correspondência |
| Obtém a lista de bloqueio | Leitura | x-ms-if-tags |
| Obtenha Intervalos de Páginas | Leitura |
Se-Modificado-Já Se-Não-Modificado-Desde If-Match Se-Nenhum-Jogo x-ms-if-tags |
| Lease Blob (Blob de Concessão) | Escreve |
Se-Modificado-Já Se-Não-Modificado-Desde If-Match Se-Nenhum-Jogo x-ms-if-tags |
| Contentor de Arrendamento | Escreve |
Se-Modificado-Já Se-Não-Modificado-Desde |
| Colocar Blob a partir da URL | Escreve |
Se-Modificado-Já Se-Não-Modificado-Desde If-Match Se-Nenhum-Jogo 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 | Escreve |
Se-Modificado-Já Se-Não-Modificado-Desde If-Match Se-Nenhum-Jogo x-ms-if-tags |
|
Colocar Bloquear a partir da URL (versão 2018-03-28 e posteriores) |
Escreve |
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 Put | Escreve |
Se-Modificado-Já Se-Não-Modificado-Desde If-Match Se-Nenhum-Jogo x-ms-if-tags |
| Colocar página | Escreve |
Se-Modificado-Já Se-Não-Modificado-Desde If-Match Se-Nenhum-Jogo x-ms-if-tags |
|
Colocar Página a partir da URL (versão 2018-11-09 e posteriores) |
Escreve |
Se-Modificado-Já Se-Não-Modificado-Desde If-Match Se-Nenhum-Jogo x-ms-if-tags |
| Definir metadados de Blob | Escreve |
Se-Modificado-Já Se-Não-Modificado-Desde If-Match Se-Nenhum-Jogo x-ms-if-tags |
| Definir propriedades de Blob | Escreve |
Se-Modificado-Já Se-Não-Modificado-Desde If-Match Se-Nenhum-Jogo x-ms-if-tags |
| Definir ACL de contêiner | Escreve |
Se-Modificado-Já Se-Não-Modificado-Desde |
| Metadados do Contentor Definir | Escreve | Se-Modificado-Já |
|
Definir Etiquetas de Blob |
Escreve |
x-ms-if-tags (versão 2019-12-12 e posteriores) Para as condições no blob (versão 2025-11-05 e posteriores): - x-ms-blob-se-modificado-desde - x-ms-blob-if-unmodified-since - x-ms-blob-se-corresponder - x-ms-blob-se-nenhum-correspondência |
| Set Blob Tier (Definir Camada de Blob) | Escreve | x-ms-if-tags |
| Blob de instantâneos | Leitura |
Se-Modificado-Já Se-Não-Modificado-Desde If-Match Se-Nenhum-Jogo x-ms-if-tags |
| Definir Política de Imutabilidade do Blob | Escreve | Se-Não-Modificado-Desde |
As seguintes operações de dados de serviço Blob não suportam atualmente cabeçalhos condicionais:
Códigos de resposta HTTP para operações que suportam cabeçalhos condicionais
Se o pedido incluir um cabeçalho condicional e o recurso solicitado não cumprir a condição especificada, o serviço Blob devolve um código de resposta HTTP. Os códigos de resposta devolvidos estão de acordo com a especificação do protocolo HTTP/1.1 (RFC 2616).
Os métodos na biblioteca cliente Azure .NET convertem estes códigos de resposta a erro num objeto StorageException.
Ler Operações
A tabela seguinte indica os códigos de resposta devolvidos 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 se a condição não for cumprida |
|---|---|
If-Modified-Since |
Não Modificado (304 (Não Modificado)) |
If-Unmodified-Since |
Pré-condição Falhada (412 (Pré-condição Falhada)) |
If-Match |
Pré-condição Falhada (412 (Pré-condição Falhada)) |
If-None-Match |
Não Modificado (304 (Não Modificado)) |
Consulte os exemplos anteriores para obter resultados ao utilizar múltiplos cabeçalhos com versões 2013-08-15 ou posteriores.
Operações de Escrita
A tabela seguinte indica os códigos de resposta devolvidos 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 se a condição não for cumprida |
|---|---|
If-Modified-Since |
Pré-condição Falhada (412 (Pré-condição Falhada)) |
If-Unmodified-Since |
Pré-condição Falhada (412 (Pré-condição Falhada)) |
If-Match |
Pré-condição Falhada (412 (Pré-condição Falhada)) |
If-None-Match |
Pré-condição Falhada (412 (Pré-condição Falhada)) |
Operações de Cópia
A tabela seguinte indica os códigos de resposta devolvidos 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 utiliza os verbos PUT.
| Cabeçalho condicional | Código de resposta se a condição não for cumprida |
|---|---|
If-Modified-Since |
Pré-condição Falhada (412 (Pré-condição Falhada)) |
If-Unmodified-Since |
Pré-condição Falhada (412 (Pré-condição Falhada)) |
If-Match |
Pré-condição Falhada (412 (Pré-condição Falhada)) |
If-None-Match |
Pré-condição Falhada (412 (Pré-condição Falhada)) |
x-ms-source-if-modified-since |
Pré-condição Falhada (412 (Pré-condição Falhada)) |
x-ms-source-if-unmodified-since |
Pré-condição Falhada (412 (Pré-condição Falhada)) |
x-ms-source-if-match |
Pré-condição Falhada (412 (Pré-condição Falhada)) |
x-ms-source-if-none-match |
Pré-condição Falhada (412 (Pré-condição Falhada)) |
Etiquetas Operações Condicionais
Para 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 etiquetas num recurso blob.
| Cabeçalho condicional | Description |
|---|---|
x-ms-if-tags |
Versão 2019-12-12 e mais recente. Um valor de TagsPredicate. Especifique este cabeçalho para realizar a operação apenas se o predicado for avaliado contra true as etiquetas do blob. |
x-ms-source-if-tags |
Versão 2019-12-12 e mais recente. Aplica-se apenas ao Copy Blob. Um valor de TagsPredicate. Especifique este cabeçalho para realizar a operação apenas se o predicado for avaliado contra true as etiquetas do blob de origem. |
Se o x-ms-if-tags cabeçalho condicional de ou x-ms-source-if-tags estiver presente num pedido e o TagsPredicate avaliar para false, o serviço Blob devolve o código de erro 412 (Falha de Pré-condição) para a operação.
O chamador deve ter permissão para ler as etiquetas de um blob para usar os x-ms-if-tags cabeçalhos condicionais de OR x-ms-source-if-tags .
Etiquetas 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' |
< |
Menos de | Age < '032' |
<= |
Menor 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 das etiquetas são cadeias, e os operadores relacionais binários suportados utilizam uma ordenação lexicográfica dos valores das etiquetas. Para suportar tipos de dados sem cadeia, incluindo números e datas, deve ser utilizado um enchimento adequado e uma formatação ordenável. Os valores das etiquetas devem estar incluídos entre aspas simples.
Se os nomes das etiquetas forem identificadores SQL normais, podem estar presentes sem escapar. Se contiverem caracteres especiais, devem ser delimitados com aspas duplas, como "TagName" = 'TagValue'.
As expressões podem incluir comparações para múltiplos nomes e valores de etiquetas. 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 pedido que contenha uma expressão inválida com código de erro 400 (Pedido Mau).