Specifica dell'intestazione di intervallo per le operazioni del servizio BLOB

Diverse operazioni GET del servizio Blob supportano l'utilizzo dell'intestazione Range HTTP standard. Molti client HTTP, tra cui la libreria client .NET, limitano le dimensioni dell'intestazione Range a un intero a 32 bit e quindi il relativo valore è limitato a un massimo di 4 GiB. Poiché sia i BLOB a blocchi che i BLOB di pagine possono essere maggiori di 4 GiB di dimensioni, il servizio BLOB accetta un'intestazione di intervallo personalizzata per qualsiasi operazione che accetta un'intestazione x-ms-range HTTP Range .

Alcuni client HTTP, inclusa la libreria Microsoft Silverlight, limitano l'accesso all'intestazione Range. L'intestazione x-ms-range può essere utilizzata per ovviare a queste limitazioni.

Se l'intestazione x-ms-range viene specificata in una richiesta, il servizio utilizza l'intervallo specificato da x-ms-range; in caso contrario, viene utilizzato l'intervallo specificato dall'intestazione Range.

Nota

La libreria client del servizio di archiviazione di Azure gestisce automaticamente l'impostazione dell'intestazione di intervallo appropriata nella richiesta quando si imposta la proprietà Range dell'oggetto PutPageProperties.

Formati dell'intestazione di intervallo

Il servizio Blob accetta due intervalli di byte per le intestazioni Range e x-ms-range. L'intervallo di byte devono essere conforme a uno dei formati seguenti per le intestazioni:

  • bytes=startByte- per le richieste effettuate utilizzando la versione 2011-08-18 o successive

  • bytes=startByte-endByte per le richieste effettuate utilizzando tutte le versioni (dalla versione 2009-04-14 a quella più recente)

Formato 1: bytes=startByte-

Il primo formato, bytes=startByte-, è disponibile solo per le richieste effettuate utilizzando la versione 2011-08-18 o successive oppure il servizio di archiviazione emulato in SDK 1.6 o versioni successive. Questo intervallo restituisce i byte dall'offset startByte fino alla fine del Blob. Ad esempio, per specificare un intervallo comprendente tutti i byte dopo i primi 256 byte di un Blob, è possibile passare una delle intestazioni seguenti:

  • Range: bytes=255-

  • x-ms-range: bytes=255-

L'intestazione Content-Length nella risposta è uguale al numero di byte dall'offset fino alla fine del Blob. Utilizzando l'intervallo di esempio precedente per un Blob di 1.024 byte di lunghezza, Content-Length è pari a 756.

Se l'offset è valido e non supera la lunghezza totale del BLOB, la richiesta restituisce un codice di stato 206 (Contenuto parziale). Se l'offset non è valido e supera la lunghezza totale del BLOB, la richiesta restituisce un codice di stato 416 (Impossibile attenersi all'intervallo richiesto).

Formato 2: bytes=startByte-endByte

Il secondo formato, bytes=startByte-endByte, è disponibile per le richieste effettuate utilizzando tutte le versioni (dalla versione 2009-04-14 alla più recente) e tutte le versioni del servizio di archiviazione emulato. Questo intervallo restituisce i byte dall'offset startByte fino a endByte. Ad esempio, per specificare un intervallo comprendente i primi 512 byte di un Blob, passare una delle intestazioni seguenti:

  • Range: bytes=0-511

  • x-ms-range: bytes=0-511

L'intestazione Content-Length nella risposta è uguale al numero di byte tra ogni offset. Usando l'intervallo di esempio precedente per un BLOB di 1.024 byte di lunghezza, Content-Length sarebbe 512.

Se l'offset è valido e non supera la lunghezza totale del BLOB, la richiesta restituisce un codice di stato 206 (Contenuto parziale). Se l'offset non è valido e supera la lunghezza totale del BLOB, la richiesta restituisce un codice di stato 416 (Impossibile attenersi all'intervallo richiesto).

Vedere anche

Concetti relativi al servizio Blob
Controllo delle versioni per i servizi di archiviazione di Azure