VENTAS: 1-800-867-1389

Especificar encabezados condicionales para las operaciones del servicio Blob

Actualizado: febrero de 2014

Son varias las operaciones del servicio Blob que admiten el uso de encabezados condicionales. Puede especificar encabezados condicionales para realizar una operación solo si se cumple una condición especificada.

El servicio Blob sigue la Especificación del protocolo HTTP/1.1 para los encabezados condicionales.

Los encabezados condicionales admitidos se describen en la tabla siguiente.

 

Encabezado condicional Descripción

If-Modified-Since

Valor DateTime. Especifique este encabezado para realizar la operación solo si se ha modificado el recurso desde la hora especificada.

If-Unmodified-Since

Valor DateTime. Especifique este encabezado para realizar la operación solo si no se ha modificado el recurso desde la fecha u hora especificada.

If-Match

Valor ETag. Especifique este encabezado para realizar la operación solo si la ETag del recurso coincide con el valor especificado. Para las versiones 2011-08-18 y más recientes, la ETag puede especificarse entre comillas.

If-None-Match

Valor ETag, o el carácter comodín (*). Especifique este encabezado para realizar la operación solo si la ETag del recurso no coincide con el valor especificado. Para las versiones 2011-08-18 y más recientes, la ETag puede especificarse entre comillas.

Especifique el carácter comodín (*) para realizar la operación solo si el recurso no existe y para que se produzca un error en la operación si existe.

A partir de la versión 2013-08-15, las operaciones Get Blob (API de REST) y Get Blob Properties (API de REST) admiten varios encabezados condicionales. Puede especificar cualquier combinación de encabezados condicionales admitidos. El servicio Blob evaluará estas condiciones de acuerdo con la siguiente expresión:

If-Match && If-Unmodified-Since && (If-None-Match || If-Modified-Since)

También puede proporcionar varios valores separados por comas para If-Match e If-None-Match. Si especifica varios valores para If-Match, el servicio Blob realiza una operación lógica OR en todos los valores suministrados antes de evaluar toda la expresión. Si especifica varios valores para if-None-Match, el servicio realiza una operación lógica AND antes de evaluar toda la expresión. No se admite especificar varios valores para If-Modified-Since e If-Unmodified-Since y produce el código de error 400 (Bad Request).

Esta característica está habilitada para cumplir la Especificación HTTP/1.1 y atender escenarios en los que una red CDN o un servidor proxy agrega encabezados condicionales adicionales a una solicitud. A continuación se muestran algunos ejemplos de diferentes combinaciones de encabezados condicionales.

Ejemplo 1:

Considere una solicitud Get Blob (API de REST) que contiene los encabezados If-Match e If-Modified-Since. En la tabla siguiente se indica el resultado si los encabezados se evalúan individualmente y si se evalúan juntos.

 

Encabezados condicionales Resultado si se evalúan individualmente Resultado si se evalúan juntos

If-Match

412 (Error de condición previa)

412 (Error de condición previa)

If-Modified-Since

200 (CORRECTO)

If-Match

412 (Error de condición previa)

412 (Error de condición previa)

If-Modified-Since

304 (No modificado)

If-Match

200 (CORRECTO)

200 (CORRECTO)

If-Modified-Since

200 (CORRECTO)

If-Match

200 (CORRECTO)

304 (No modificado)

If-Modified-Since

304 (No modificado)

Ejemplo 2:

Considere una solicitud que contiene los encabezados If-None-Match e If-Modified-Since.

 

Encabezados condicionales Resultado si se evalúan individualmente Resultado si se evalúan juntos

If-None-Match

304 (No modificado)

200 (CORRECTO)

If-Modified-Since

200 (CORRECTO)

If-None-Match

200 (CORRECTO)

200 (CORRECTO)

If-Modified-Since

200 (CORRECTO)

If-None-Match

200 (CORRECTO)

200 (CORRECTO)

If-Modified-Since

304 (No modificado)

If-None-Match

304 (No modificado)

304 (No modificado)

If-Modified-Since

304 (No modificado)

Ejemplo 3:

Considere una solicitud que contiene los encabezados If-Modified-Since, If-Match e If-Unmodified-Since.

 

Encabezados condicionales Resultado si se evalúan individualmente Resultado si se evalúan juntos

If-Modified-Since

200 (CORRECTO)

412 (Error de condición previa)

If-Match

412 (Error de condición previa)

If-Unmodified-Since

200 (CORRECTO)

If-Modified-Since

200 (CORRECTO)

412 (Error de condición previa)

If-Match

200 (CORRECTO)

If-Unmodified-Since

412 (Error de condición previa)

If-Modified-Since

304 (No modificado)

412 (Error de condición previa)

If-Match

200 (CORRECTO)

If-Unmodified-Since

412 (Error de condición previa)

If-Modified-Since

304 (No modificado)

304 (No modificado)

If-Match

200 (CORRECTO)

If-Unmodified-Since

200 (CORRECTO)

Ejemplo 4:

Considere una solicitud que contiene los encabezados If-Modified-Since, If-None-Match, If-Unmodified-Since e If-Match.

 

Combinación Código de estado HTTP individual Resultado de estado de Get Blob

If-Modified-Since

200 (CORRECTO)

200 (CORRECTO)

If-None-Match

200 (CORRECTO)

If-Unmodified-Since

200 (CORRECTO)

If-Match

200 (CORRECTO)

If-Modified-Since

200 (CORRECTO)

412 (Error de condición previa)

If-None-Match

304 (No modificado)

If-Unmodified-Since

412 (Error de condición previa)

If-Match

200 (CORRECTO)

If-Modified-Since

200 (CORRECTO)

200 (CORRECTO)

If-None-Match

304 (No modificado)

If-Unmodified-Since

200 (CORRECTO)

If-Match

200 (CORRECTO)

If-Modified-Since

304 (No modificado)

412 (Error de condición previa)

If-None-Match

200 (CORRECTO)

If-Unmodified-Since

200 (CORRECTO)

If-Match

412 (Error de condición previa)

If-Modified-Since

304 (No modificado)

412 (Error de condición previa)

If-None-Match

200 (CORRECTO)

If-Unmodified-Since

412 (Error de condición previa)

If-Match

412 (Error de condición previa)

If-Modified-Since

304 (No modificado)

200 (CORRECTO)

If-None-Match

200 (CORRECTO)

If-Unmodified-Since

200 (CORRECTO)

If-Match

200 (CORRECTO)

If-Modified-Since

304 (No modificado)

412 (Error de condición previa)

If-None-Match

304 (No modificado)

If-Unmodified-Since

412 (Error de condición previa)

If-Match

200 (CORRECTO)

Al llamar a operaciones de lectura del servicio Blob (Get Blob (API de REST) y Get Blob Properties (API de REST)) con versiones anteriores a 2013-08-15, y al llamar a cualquier operación de escritura independientemente de la versión, tenga en cuenta lo siguiente:

  • Si una solicitud especifica los encabezados If-None-Match e If-Modified-Since, la solicitud se evalúa según los criterios especificados en If-None-Match.

  • Si una solicitud especifica los encabezados If-Match e If-Unmodified-Since, la solicitud se evalúa según los criterios especificados en If-Match.

  • Con la excepción de las dos combinaciones de encabezados condicionales enumeradas anteriormente, una solicitud solo puede especificar un único encabezado condicional. Si se especifica más de un encabezado condicional, se genera el código de estado 400 (Bad Request).

  • Si una respuesta incluye una ETag, compruebe la versión de la solicitud y la respuesta antes de procesar la ETag. Por ejemplo, la versión 2011-08-18 y posteriores devuelven una ETag entre comillas, pero las versiones anteriores no. Asegúrese de que la aplicación pueda procesar ambos formatos de ETag antes de evaluarlos.

  • RFC 2616 permite varios valores ETag en un único encabezado, pero las solicitudes al servicio Blob solo pueden incluir un valor ETag. Si se especifica más de un valor ETag, se genera el código de estado 400 (Bad Request).

Las operaciones que admiten encabezados condicionales se describen en la tabla siguiente.

 

Operación REST

Tipo de operación

Encabezados condicionales admitidos

Copy Blob (API de REST)

Lectura y escritura

Para las condiciones en el blob de destino:

  • If-Modified-Since 

  • If-Unmodified-Since 

  • If-Match 

  • If-None-Match 

Para las condiciones en el blob de origen:

  • x-ms-source-if-modified-since 

  • x-ms-source-if-unmodified-since 

  • x-ms-source-if-match 

  • x-ms-source-if-none-match 

Delete Blob (API de REST)

Escribir

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Delete Container (API de REST)

Escribir

If-Modified-Since

If-Unmodified-Since

Get Blob (API de REST)

Lectura

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Get Blob Metadata (API de REST)

Lectura

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Get Blob Properties (API de REST)

Lectura

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Get Page Ranges (API de REST)

Escribir

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Lease Blob (API de REST)

Escribir

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Lease Container (API de REST)

Escribir

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Put Blob (API de REST)

Escribir

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Put Block List (API de REST)

Escribir

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Put Page (API de REST)

Escribir

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Set Blob Metadata (API de REST)

Escribir

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Set Blob Properties (API de REST)

Escribir

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Set Container ACL (API de REST)

Escribir

If-Modified-Since

If-Unmodified-Since

Set Container Metadata (API de REST)

Escribir

If-Modified-Since

Snapshot Blob (API de REST)

Lectura

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Las operaciones de datos de servicio de blob siguientes no admiten actualmente encabezados condicionales:

Si la solicitud incluye un encabezado condicional y el recurso solicitado no cumple la condición especificada, el servicio Blob devuelve un código de respuesta HTTP. Los códigos de respuesta devueltos están de acuerdo con la especificación del protocolo HTTP/1.1 (RFC 2616). Los métodos de las Bibliotecas de Windows Azure para .NET convierten estos códigos de respuesta de error en una excepción StorageClientException, y rellenan la propiedad StatusCode con un valor de la enumeración System.Net.HttpStatusCode. Para ver ejemplos de código que controla una excepción causada por una operación condicional, vea Actualizar de forma condicional una copia local de un blob.

La tabla siguiente indica los códigos de respuesta devueltos para una condición que no se ha cumplido para cada encabezado condicional si la operación es una operación de lectura. Las operaciones de lectura utilizan los verbos GET o HEAD.

 

Encabezado condicional Código de respuesta si la condición no se ha cumplido

If-Modified-Since

No modificado (304 (No modificado))

If-Unmodified-Since

Error de condición previa (412 (Error de condición previa))

If-Match

Error de condición previa (412 (Error de condición previa))

If-None-Match

No modificado (304 (No modificado))

Vea los ejemplos anteriores para conocer los resultados cuando se utilizan varios encabezados con las versiones 2013-08-15 o posteriores.

La tabla siguiente indica los códigos de respuesta devueltos para una condición que no se ha cumplido para cada encabezado condicional si la operación es una operación de escritura. Las operaciones de escritura utilizan los verbos PUT o DELETE.

 

Encabezado condicional Código de respuesta si la condición no se ha cumplido

If-Modified-Since

Error de condición previa (412 (Error de condición previa))

If-Unmodified-Since

Error de condición previa (412 (Error de condición previa))

If-Match

Error de condición previa (412 (Error de condición previa))

If-None-Match

Error de condición previa (412 (Error de condición previa))

La tabla siguiente indica los códigos de respuesta devueltos para una condición que no se ha cumplido para cada encabezado condicional si la operación es una operación de copia. La operación Copy Blob (API de REST) utiliza los verbos PUT.

 

Encabezado condicional Código de respuesta si la condición no se ha cumplido

If-Modified-Since

Error de condición previa (412 (Error de condición previa))

If-Unmodified-Since

Error de condición previa (412 (Error de condición previa))

If-Match

Error de condición previa (412 (Error de condición previa))

If-None-Match

Error de condición previa (412 (Error de condición previa))

x-ms-source-if-modified-since

Error de condición previa (412 (Error de condición previa))

x-ms-source-if-unmodified-since

Error de condición previa (412 (Error de condición previa))

x-ms-source-if-match

Error de condición previa (412 (Error de condición previa))

x-ms-source-if-none-match

Error de condición previa (412 (Error de condición previa))

Vea también

¿Te ha resultado útil?
(Caracteres restantes: 1500)
Gracias por sus comentarios
Mostrar:
© 2014 Microsoft