VENDITE: 1-800-867-1389

Specifica di intestazioni condizionali per le operazioni del servizio Blob

Aggiornamento: febbraio 2014

Diverse operazioni del servizio Blob supportano l'utilizzo delle intestazioni condizionali. È possibile specificare le intestazioni condizionali per eseguire un'operazione solo se è stata soddisfatta una condizione specificata.

Il servizio Blob segue la specifica del protocollo HTTP/1.1 per le intestazioni condizionali.

Nella tabella seguente vengono descritte le intestazioni condizionali supportate.

 

Intestazione condizionale Descrizione

If-Modified-Since

Valore DateTime. Specificare questa intestazione per eseguire l'operazione solo se la risorsa è stata modificata dopo l'ora specificata.

If-Unmodified-Since

Valore DateTime. Specificare questa intestazione per eseguire l'operazione solo se la risorsa non è stata modificata dopo l'ora e la data specificate.

If-Match

Valore ETag. Specificare questa intestazione per eseguire l'operazione solo se il valore ETag della risorsa corrisponde al valore specificato. Per la versione 2011-08-18 e successive, il valore ETag può essere specificato tra virgolette.

If-None-Match

Valore ETag o il carattere jolly (*). Specificare questa intestazione per eseguire l'operazione solo se il valore ETag della risorsa non corrisponde al valore specificato. Per la versione 2011-08-18 e successive, il valore ETag può essere specificato tra virgolette.

Specificare il carattere jolly (*) per eseguire l'operazione solo se la risorsa non esiste. In caso contrario, se la risorsa esiste l'operazione ha esito negativo.

A partire dalla versione 2013-08-15, le operazioni Get Blob (API REST) e Get Blob Properties (API REST) supportano intestazioni condizionali multiple. È possibile specificare qualsiasi combinazione di intestazioni condizionali supportate. Il servizio Blob valuterà queste condizioni in base alla seguente espressione:

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

È inoltre possibile fornire valori multipli delimitati da virgole per If-Match e If-None-Match. Se si specificano valori multipli per If-Match, il servizio Blob esegue un'operazione logica OR in tutti valori forniti prima della valutazione dell'intera espressione. Se si specificano valori multipli per if-None-Match, il servizio esegue un'operazione logica AND prima della valutazione dell'intera espressione. La specifica di valori multipli per If-Modified-Since e If-Unmodified-Since non è supportata e genera il codice di errore 400 (Bad Request).

Questa funzionalità è abilitata per essere conforme alla specifica HTTP/1.1 e per soddisfare gli scenari in cui una rete per la distribuzione di contenuti (rete CDN) o il server proxy aggiunge intestazioni condizionali aggiuntive a una richiesta in fase di elaborazione. Di seguito sono riportati alcuni esempi di combinazioni diverse di intestazioni condizionali.

Esempio 1:

Si consideri una richiesta Get Blob (API REST) contenente le intestazioni If-Modified-Since e If-Match. Nella tabella seguente viene indicato il risultato se le intestazioni vengono valutate singolarmente e il risultato se vengono valutate in combinazione.

 

Intestazioni condizionali Risultato se valutato singolarmente Risultato se valutato in combinazione

If-Match

412 (Condizione preliminare non riuscita)

412 (Condizione preliminare non riuscita)

If-Modified-Since

200 (OK)

If-Match

412 (Condizione preliminare non riuscita)

412 (Condizione preliminare non riuscita)

If-Modified-Since

304 (Non modificato)

If-Match

200 (OK)

200 (OK)

If-Modified-Since

200 (OK)

If-Match

200 (OK)

304 (Non modificato)

If-Modified-Since

304 (Non modificato)

Esempio 2:

Si consideri una richiesta contenente le intestazioni If-None-Match e If-Modified-Since.

 

Intestazioni condizionali Risultato se valutato singolarmente Risultato se valutato in combinazione

If-None-Match

304 (Non modificato)

200 (OK)

If-Modified-Since

200 (OK)

If-None-Match

200 (OK)

200 (OK)

If-Modified-Since

200 (OK)

If-None-Match

200 (OK)

200 (OK)

If-Modified-Since

304 (Non modificato)

If-None-Match

304 (Non modificato)

304 (Non modificato)

If-Modified-Since

304 (Non modificato)

Esempio 3:

Si consideri una richiesta contenente le intestazioni If-Modified-Since, If-Match e If-Unmodified-Since.

 

Intestazioni condizionali Risultato se valutato singolarmente Risultato se valutato in combinazione

If-Modified-Since

200 (OK)

412 (Condizione preliminare non riuscita)

If-Match

412 (Condizione preliminare non riuscita)

If-Unmodified-Since

200 (OK)

If-Modified-Since

200 (OK)

412 (Condizione preliminare non riuscita)

If-Match

200 (OK)

If-Unmodified-Since

412 (Condizione preliminare non riuscita)

If-Modified-Since

304 (Non modificato)

412 (Condizione preliminare non riuscita)

If-Match

200 (OK)

If-Unmodified-Since

412 (Condizione preliminare non riuscita)

If-Modified-Since

304 (Non modificato)

304 (Non modificato)

If-Match

200 (OK)

If-Unmodified-Since

200 (OK)

Esempio 4:

Si consideri una richiesta contenente le intestazioni If-Modified-Since, If-None-Match, If-Unmodified-Since e If-Match.

 

Combinazione Codice di stato HTTP singolo Risultato dello stato Get Blob

If-Modified-Since

200 (OK)

200 (OK)

If-None-Match

200 (OK)

If-Unmodified-Since

200 (OK)

If-Match

200 (OK)

If-Modified-Since

200 (OK)

412 (Condizione preliminare non riuscita)

If-None-Match

304 (Non modificato)

If-Unmodified-Since

412 (Condizione preliminare non riuscita)

If-Match

200 (OK)

If-Modified-Since

200 (OK)

200 (OK)

If-None-Match

304 (Non modificato)

If-Unmodified-Since

200 (OK)

If-Match

200 (OK)

If-Modified-Since

304 (Non modificato)

412 (Condizione preliminare non riuscita)

If-None-Match

200 (OK)

If-Unmodified-Since

200 (OK)

If-Match

412 (Condizione preliminare non riuscita)

If-Modified-Since

304 (Non modificato)

412 (Condizione preliminare non riuscita)

If-None-Match

200 (OK)

If-Unmodified-Since

412 (Condizione preliminare non riuscita)

If-Match

412 (Condizione preliminare non riuscita)

If-Modified-Since

304 (Non modificato)

200 (OK)

If-None-Match

200 (OK)

If-Unmodified-Since

200 (OK)

If-Match

200 (OK)

If-Modified-Since

304 (Non modificato)

412 (Condizione preliminare non riuscita)

If-None-Match

304 (Non modificato)

If-Unmodified-Since

412 (Condizione preliminare non riuscita)

If-Match

200 (OK)

Quando si richiamano le operazioni di lettura del servizio Blob (Get Blob (API REST) e Get Blob Properties (API REST)) con le versioni precedenti alla 2013-08-15 e quando si richiamano le operazioni di scrittura indipendentemente dalla versione, tenere presente quanto segue:

  • Se una richiesta specifica le intestazioni If-None-Match e If-Modified-Since, la richiesta viene valutata in base ai criteri specificati in If-None-Match.

  • Se una richiesta specifica le intestazioni If-Match e If-Unmodified-Since, la richiesta viene valutata in base ai criteri specificati in If-Match.

  • Ad eccezione delle due combinazioni di intestazioni condizionali elencate sopra, una richiesta può specificare una sola intestazione condizionale. La definizione di più intestazioni condizionali comporta la restituzione del codice di stato 400 (Bad Request).

  • Se una risposta include un valore ETag, verificare la versione della richiesta e della risposta prima di elaborare il valore ETag. Ad esempio, a differenza delle versioni precedenti, la versione 2011-08-18 e quelle successive restituiscono un valore ETag tra virgolette. Assicurarsi che l'applicazione possa elaborare entrambi i formati ETag prima che vengano valutati.

  • La specifica RFC 2616 consente la presenza di più valori ETag in una singola intestazione, tuttavia le richieste al servizio Blob possono includere un solo valore ETag. La definizione di più valori ETag genera il codice di stato 400 (Bad Request).

Nella tabella seguente vengono descritte le operazioni che supportano le intestazioni condizionali.

 

Operazione REST

Tipo di operazione

Intestazioni condizionali supportate

Copy Blob (API REST)

Lettura e scrittura

Per le condizioni sul Blob di destinazione:

  • If-Modified-Since 

  • If-Unmodified-Since 

  • If-Match 

  • If-None-Match 

Per le condizioni sul Blob di origine:

  • 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 REST)

Scrittura

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Delete Container (API REST)

Scrittura

If-Modified-Since

If-Unmodified-Since

Get Blob (API REST)

Lettura

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Get Blob Metadata (API REST)

Lettura

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Get Blob Properties (API REST)

Lettura

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Get Page Ranges (API REST)

Scrittura

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Lease Blob (API REST)

Scrittura

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Lease Container (API REST)

Scrittura

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Put Blob (API REST)

Scrittura

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Put Block List (API REST)

Scrittura

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Put Page (API REST)

Scrittura

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Set Blob Metadata (API REST)

Scrittura

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Set Blob Properties (API REST)

Scrittura

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Set Container ACL (API REST)

Scrittura

If-Modified-Since

If-Unmodified-Since

Set Container Metadata (API REST)

Scrittura

If-Modified-Since

Snapshot Blob (API REST)

Lettura

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Le seguenti operazioni dei dati del servizio Blob non supportano attualmente le intestazioni condizionali:

Se la richiesta include un'intestazione condizionale e la condizione specificata non è soddisfatta dalla risorsa richiesta, il servizio Blob restituisce un codice di risposta HTTP. I codici di risposta restituiti sono conformi alla specifica del protocollo HTTP/1.1 (RFC 2616). I metodi delle librerie .NET di Windows Azure convertono questi codici di risposta di errore in un oggetto StorageClientException e popolano la proprietà StatusCode con un valore dall'enumerazione System.Net.HttpStatusCode. Per visualizzare il codice di esempio che gestisce un'eccezione causata da un'operazione condizionale, vedere Aggiornare una copia locale di un Blob in modo condizionale.

Nella tabella seguente sono indicati i codici di risposta restituiti per una condizione non soddisfatta per ogni intestazione condizionale se l'operazione è un'operazione di lettura. Le operazioni di lettura utilizzano i verbi GET o HEAD.

 

Intestazione condizionale Codice di risposta se la condizione non è stata soddisfatta

If-Modified-Since

Non modificato (304 (non modificato))

If-Unmodified-Since

Condizione preliminare non riuscita (412 (Condizione preliminare non riuscita))

If-Match

Condizione preliminare non riuscita (412 (Condizione preliminare non riuscita))

If-None-Match

Non modificato (304 (non modificato))

Vedere gli esempi precedenti per i risultati quando si utilizzano intestazioni multiple con la versione 2013-08-15 o successive.

Nella tabella seguente sono indicati i codici di risposta restituiti per una condizione non soddisfatta per ogni intestazione condizionale se l'operazione è un'operazione di scrittura. Le operazioni di scrittura utilizzano i verbi PUT o DELETE.

 

Intestazione condizionale Codice di risposta se la condizione non è stata soddisfatta

If-Modified-Since

Condizione preliminare non riuscita (412 (Condizione preliminare non riuscita))

If-Unmodified-Since

Condizione preliminare non riuscita (412 (Condizione preliminare non riuscita))

If-Match

Condizione preliminare non riuscita (412 (Condizione preliminare non riuscita))

If-None-Match

Condizione preliminare non riuscita (412 (Condizione preliminare non riuscita))

Nella tabella seguente sono indicati i codici di risposta restituiti per una condizione non soddisfatta per ogni intestazione condizionale se l'operazione è un'operazione di copia. L'operazione Copy Blob (API REST) utilizza i verbi PUT.

 

Intestazione condizionale Codice di risposta se la condizione non è stata soddisfatta

If-Modified-Since

Condizione preliminare non riuscita (412 (Condizione preliminare non riuscita))

If-Unmodified-Since

Condizione preliminare non riuscita (412 (Condizione preliminare non riuscita))

If-Match

Condizione preliminare non riuscita (412 (Condizione preliminare non riuscita))

If-None-Match

Condizione preliminare non riuscita (412 (Condizione preliminare non riuscita))

x-ms-source-if-modified-since

Condizione preliminare non riuscita (412 (Condizione preliminare non riuscita))

x-ms-source-if-unmodified-since

Condizione preliminare non riuscita (412 (Condizione preliminare non riuscita))

x-ms-source-if-match

Condizione preliminare non riuscita (412 (Condizione preliminare non riuscita))

x-ms-source-if-none-match

Condizione preliminare non riuscita (412 (Condizione preliminare non riuscita))

Vedere anche

Il documento è risultato utile?
(1500 caratteri rimanenti)
Grazie per i commenti inviati.
Mostra:
© 2014 Microsoft