Sdílet prostřednictvím


Specifikace podmíněných hlaviček pro operace služby Blob

Několik operací služby Blob podporuje použití podmíněných hlaviček. Můžete specifikovat podmíněné hlavičky tak, aby operace prováděly pouze tehdy, když je splněna zadaná podmínka.

Služba Blob se řídí specifikací protokolu HTTP/1.1 pro podmíněné hlavičky.

Podporované podmíněné hlavičky

Podporované podmíněné hlavičky jsou popsány v následující tabulce.

Podmíněná hlavička Description
If-Modified-Since Hodnota DateTime . Formát data se řídí dokumentem RFC 1123. Pro více informací viz Reprezentace hodnot data a času v hlavičkách. Specifikujte tuto hlavičku tak, aby operace prováděla pouze tehdy, pokud byl zdroj od stanoveného času změněn.
If-Unmodified-Since Hodnota DateTime . Formát data se řídí dokumentem RFC 1123. Pro více informací viz Reprezentace hodnot data a času v hlavičkách. Specifikujte tuto hlavičku tak, aby operace prováděla pouze tehdy, pokud zdroj nebyl před stanoveným datem/časem změněn.
If-Match Hodnota ETag. Zadejte tuto hlavičku, aby se operace provedla pouze v případě, že ETag prostředku odpovídá určené hodnotě. U verzí 2011-08-18 a novějších lze ETag uvést v uvozovkách.
If-None-Match Hodnota značky ETag nebo zástupný znak (*). Tuto hlavičku určete tak, aby provedla operaci pouze tehdy, pokud ETag zdroje neodpovídá zadané hodnotě. U verzí 2011-08-18 a novějších lze ETag uvést v uvozovkách.

Specifikujte zástupce (*), který provede operaci pouze pokud zdroj neexistuje, a pokud existuje, operaci neuspějte.

Specifikace podmíněných hlaviček pro čtení blob služeb ve verzi 2013-08-15 nebo později

Od verze 2013-08-15 operace Get Blob a Get Blob Properties podporují více podmíněných hlaviček. Můžete specifikovat libovolnou kombinaci podporovaných podmíněných hlaviček. Služba Blob vyhodnocuje tyto podmínky podle následujícího výrazu:

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

Můžete také zadat více hodnot oddělených čárkami pro If-Match a If-None-Match. Pokud zadáte více hodnot pro If-Match, pak služba Blob provede logickou OR operaci na všech zadaných hodnotách před vyhodnocením celého výrazu. Pokud zadáte více hodnot pro if-None-Match, služba provede logickou AND operaci před vyhodnocením celého výrazu. Zadání více hodnot pro If-Modified-Since a If-Unmodified-Since není podporováno a vede k chybovému kódu 400 (Bad Request).

Tato funkce je povolena, aby vyhověla specifikaci HTTP/1.1. Také slouží pro situace, kdy Content Delivery Network (CDN) nebo proxy server přidá další podmíněné hlavičky k požadavkům během letu. Následující příklady ilustrují několik různých kombinací podmíněných hlaviček.

Příklad 1:

Uvažujme požadavek Get Blob obsahující hlavičky If-Match a If-Modified-Since . Následující tabulka ukazuje výsledek, pokud jsou hlavičky vyhodnocovány jednotlivě, a výsledek, pokud jsou hodnoceny v kombinaci.

Podmíněné hlavičky Výsledek při individuálním hodnocení Výsledek při hodnocení v kombinaci
If-Match 412 (Předpodmínka nesplněna) 412 (Předpodmínka nesplněna)
If-Modified-Since 200 (OK) 412 (Předpodmínka nesplněna)
If-Match 412 (Předpodmínka nesplněna) 412 (Předpodmínka nesplněna)
If-Modified-Since 304 (Neupraveno) 412 (Předpodmínka nesplněna)
If-Match 200 (OK) 200 (OK)
If-Modified-Since 200 (OK) 200 (OK)
If-Match 200 (OK) 304 (Neupraveno)
If-Modified-Since 304 (Neupraveno) 304 (Neupraveno)

Příklad 2:

Uvažujme požadavek obsahující If-None-Match a If-Modified-Since hlavičky.

Podmíněné hlavičky Výsledek při individuálním hodnocení Výsledek při hodnocení v kombinaci
If-None-Match 304 (Neupraveno) 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 (Neupraveno) 200 (OK)
If-None-Match 304 (Neupraveno) 304 (Neupraveno)
If-Modified-Since 304 (Neupraveno) 304 (Neupraveno)

Příklad 3:

Uvažujme požadavek obsahující If-Modified-Since, If-Match, a If-Unmodified-Since hlavičky.

Podmíněné hlavičky Výsledek při individuálním hodnocení Výsledek při hodnocení v kombinaci
If-Modified-Since 200 (OK) 412 (Předpodmínka nesplněna)
If-Match 412 (Předpodmínka nesplněna) 412 (Předpodmínka nesplněna)
If-Unmodified-Since 200 (OK) 412 (Předpodmínka nesplněna)
If-Modified-Since 200 (OK) 412 (Předpodmínka nesplněna)
If-Match 200 (OK) 412 (Předpodmínka nesplněna)
If-Unmodified-Since 412 (Předpodmínka nesplněna) 412 (Předpodmínka nesplněna)
If-Modified-Since 304 (Neupraveno) 412 (Předpodmínka nesplněna)
If-Match 200 (OK) 412 (Předpodmínka nesplněna)
If-Unmodified-Since 412 (Předpodmínka nesplněna) 412 (Předpodmínka nesplněna)
If-Modified-Since 304 (Neupraveno) 304 (Neupraveno)
If-Match 200 (OK) 304 (Neupraveno)
If-Unmodified-Since 200 (OK) 304 (Neupraveno)

Příklad 4:

Uvažujme požadavek obsahující If-Modified-Since, If-None-Match, If-Unmodified-Since, a If-Match hlavičky.

Kombinace Individuální http stavový kód Získejte výsledek stavu 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 (Předpodmínka nesplněna)
If-None-Match 304 (Neupraveno) 412 (Předpodmínka nesplněna)
If-Unmodified-Since 412 (Předpodmínka nesplněna) 412 (Předpodmínka nesplněna)
If-Match 200 (OK) 412 (Předpodmínka nesplněna)
If-Modified-Since 200 (OK) 200 (OK)
If-None-Match 304 (Neupraveno) 200 (OK)
If-Unmodified-Since 200 (OK) 200 (OK)
If-Match 200 (OK) 200 (OK)
If-Modified-Since 304 (Neupraveno) 412 (Předpodmínka nesplněna)
If-None-Match 200 (OK) 412 (Předpodmínka nesplněna)
If-Unmodified-Since 200 (OK) 412 (Předpodmínka nesplněna)
If-Match 412 (Předpodmínka nesplněna) 412 (Předpodmínka nesplněna)
If-Modified-Since 304 (Neupraveno) 412 (Předpodmínka nesplněna)
If-None-Match 200 (OK) 412 (Předpodmínka nesplněna)
If-Unmodified-Since 412 (Předpodmínka nesplněna) 412 (Předpodmínka nesplněna)
If-Match 412 (Předpodmínka nesplněna) 412 (Předpodmínka nesplněna)
If-Modified-Since 304 (Neupraveno) 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 (Neupraveno) 412 (Předpodmínka nesplněna)
If-None-Match 304 (Neupraveno) 412 (Předpodmínka nesplněna)
If-Unmodified-Since 412 (Předpodmínka nesplněna) 412 (Předpodmínka nesplněna)
If-Match 200 (OK) 412 (Předpodmínka nesplněna)

Specifikujte podmíněné hlavičky pro čtení ve verzích před 15. 8. 2013 a pro zápisové operace (všechny verze)

Při volání operací čtení služeb Blob (Get Blob a Get Blob Properties) s verzemi staršími než 15. 8. 2013 a při volání jakékoli zápisové operace bez ohledu na verzi mějte na paměti následující faktory:

  • Pokud požadavek specifikuje jak If-None-Match hlavičky, tak , If-Modified-Since je vyhodnocen na základě kritérií specifikovaných v .If-None-Match

  • Pokud požadavek specifikuje jak If-Match hlavičky, tak , If-Unmodified-Since je vyhodnocen na základě kritérií specifikovaných v .If-Match

  • Kromě dvou kombinací podmíněných hlaviček může požadavek specifikovat pouze jednu podmíněnou hlavičku. Zadání více než jedné podmíněné hlavičky vede ke stavovému kódu 400 (Bad Request).

  • Pokud odpověď obsahuje ETag, ověřte verzi požadavku a odpovědi před zpracováním ETag. Například verze 2011-08-18 a pozdější vrací citovaný ETag, ale starší verze ne. Ujistěte se, že vaše žádost zvládne oba formáty ETag před jejich vyhodnocením.

  • RFC 2616 umožňuje více ETag hodnot v jedné hlavičce, ale požadavky na službu Blob mohou obsahovat pouze jednu ETag hodnotu. Zadání více než jedné hodnoty ETag vede ke stavovému kódu 400 (Bad Request).

Operace podporující podmíněné hlavičky

Operace, které podporují podmíněné hlavičky, jsou popsány v následující tabulce.

Operace REST Typ operace Podporované podmíněné hlavičky
Připojit blok

(verze 2015-02-21 a později)
Napiš If-Modified-Since

Jeli-nemodifikované-od

If-Match

Kdyby neměl shodu

x-ms-if-tags
Přidat blok z URL

(verze 2018-11-09 a později)
Napiš If-Modified-Since

Jeli-nemodifikované-od

If-Match

Kdyby neměl shodu

x-ms-if-tags
Kopírování objektu blob Čtení a zápis Pro podmínky na cílovém blobu:

- If-Modified-Since

- Jeli-nemodifikované-od

- If-Match

- Kdyby neměl shodu

- x-ms-if-tags

Pro podmínky na zdrojovém blobu:

- 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
Odstranit blob Napiš If-Modified-Since

Jeli-nemodifikované-od

If-Match

Kdyby neměl shodu

x-ms-if-tags
Odstranění kontejneru Napiš If-Modified-Since

Jeli-nemodifikované-od
Získejte Bloba Čti If-Modified-Since

Jeli-nemodifikované-od

If-Match

Kdyby neměl shodu

x-ms-if-tags
Získání metadat blobů Čti If-Modified-Since

Jeli-nemodifikované-od

If-Match

Kdyby neměl shodu

x-ms-if-tags
Získání vlastností objektu blob Čti If-Modified-Since

Jeli-nemodifikované-od

If-Match

Kdyby neměl shodu

x-ms-if-tags
Získání značek objektů blob

Čti x-ms-if-tagy (verze 2019-12-12 a později)

Pro podmínky na blob (verze 2025-11-05 a později):

- x-ms-blob-if-modified-since

- x-ms-blob-if-unmodified-since

- x-ms-blob-if-match

- x-ms-blob-if-none-match
Získejte blokovaný seznam Čti x-ms-if-tags
Získejte rozsahy stran Čti If-Modified-Since

Jeli-nemodifikované-od

If-Match

Kdyby neměl shodu

x-ms-if-tags
Pronájem Blob Napiš If-Modified-Since

Jeli-nemodifikované-od

If-Match

Kdyby neměl shodu

x-ms-if-tags
Zapůjčení kontejneru Napiš If-Modified-Since

Jeli-nemodifikované-od
Zadejte blob z URL Napiš If-Modified-Since

Jeli-nemodifikované-od

If-Match

Kdyby neměl shodu

Pro podmínky na zdrojovém blobu:

- x-ms-source-If-Modified-Since

- x-ms-source-if-Unmodified-Since

- x-ms-source-If-Match

- x-ms-source-If-None-Match

Vložení objektu blob Napiš If-Modified-Since

Jeli-nemodifikované-od

If-Match

Kdyby neměl shodu

x-ms-if-tags
Uložit blok z URL

(verze 2018-03-28 a později)
Napiš x-ms-source-If-Modified-Since

x-ms-source-If-Unmodified-Since

x-ms-source-If-Match

x-ms-source-If-None-Match
Seznam bloků cesty Napiš If-Modified-Since

Jeli-nemodifikované-od

If-Match

Kdyby neměl shodu

x-ms-if-tags
Vložit stránku Napiš If-Modified-Since

Jeli-nemodifikované-od

If-Match

Kdyby neměl shodu

x-ms-if-tags
Položte stránku z URL

(verze 2018-11-09 a později)
Napiš If-Modified-Since

Jeli-nemodifikované-od

If-Match

Kdyby neměl shodu

x-ms-if-tags
Nastavení metadat objektů blob Napiš If-Modified-Since

Jeli-nemodifikované-od

If-Match

Kdyby neměl shodu

x-ms-if-tags
Nastavení vlastností objektu blob Napiš If-Modified-Since

Jeli-nemodifikované-od

If-Match

Kdyby neměl shodu

x-ms-if-tags
Nastavit přístupová práva kontejneru ACL Napiš If-Modified-Since

Jeli-nemodifikované-od
Set Container Metadata Napiš If-Modified-Since
Nastavení značek Blob

Napiš x-ms-if-tagy (verze 2019-12-12 a později)

Pro podmínky na blob (verze 2025-11-05 a později):

- x-ms-blob-if-modified-since

- x-ms-blob-if-unmodified-since

- x-ms-blob-if-match

- x-ms-blob-if-none-match
Nastavit úroveň blobu Napiš x-ms-if-tags
Snapshot Blob Čti If-Modified-Since

Jeli-nemodifikované-od

If-Match

Kdyby neměl shodu

x-ms-if-tags
Nastavte politiku neměnnosti blobů Napiš Jeli-nemodifikované-od

Následující operace s datovými složkami Blob v současnosti nepodporují podmíněné hlavičky:

HTTP odpovědi pro operace podporující podmíněné hlavičky

Pokud požadavek obsahuje podmíněnou hlavičku a požadovaný zdroj nesplňuje danou podmínku, služba Blob vrátí HTTP kód odpovědi. Vrácené kódy odpovědí jsou v souladu se specifikací protokolu HTTP/1.1 (RFC 2616).

Metody v klientské knihovně Azure .NET převádějí tyto kódy odezvy na StorageException objekt.

Čtení operací

Následující tabulka ukazuje kódy odpovědí vrácené pro nesplněnou podmínku pro každou podmíněnou hlavičku při čtení operace. Čtení operací používá slovesa GET nebo HEAD.

Podmíněná hlavička Kód odpovědi, pokud podmínka není splněna
If-Modified-Since Neupraveno (304 (nemodifikováno))
If-Unmodified-Since Předpodmínka nesplněna (412 (Předpodmínka nesplněna))
If-Match Předpodmínka nesplněna (412 (Předpodmínka nesplněna))
If-None-Match Neupraveno (304 (nemodifikováno))

Odkazujte na předchozí příklady pro výsledky při použití více hlaviček s verzemi 2013-08-15 nebo novější.

Zápisové operace

Následující tabulka ukazuje kódy odpovědí vrácené pro nesplněnou podmínku pro každou podmíněnou hlavičku, pokud je operace zápisem. Operace zápisu používají slovesa PUT nebo DELETE.

Podmíněná hlavička Kód odpovědi, pokud podmínka není splněna
If-Modified-Since Předpodmínka nesplněna (412 (Předpodmínka nesplněna))
If-Unmodified-Since Předpodmínka nesplněna (412 (Předpodmínka nesplněna))
If-Match Předpodmínka nesplněna (412 (Předpodmínka nesplněna))
If-None-Match Předpodmínka nesplněna (412 (Předpodmínka nesplněna))

Kopírování operací

Následující tabulka ukazuje kódy odpovědí vrácené pro nesplněnou podmínku pro každou podmíněnou hlavičku, pokud je operace kopírováním. Operace Copy Blob používá slovesa PUT.

Podmíněná hlavička Kód odpovědi, pokud podmínka není splněna
If-Modified-Since Předpodmínka nesplněna (412 (Předpodmínka nesplněna))
If-Unmodified-Since Předpodmínka nesplněna (412 (Předpodmínka nesplněna))
If-Match Předpodmínka nesplněna (412 (Předpodmínka nesplněna))
If-None-Match Předpodmínka nesplněna (412 (Předpodmínka nesplněna))
x-ms-source-if-modified-since Předpodmínka nesplněna (412 (Předpodmínka nesplněna))
x-ms-source-if-unmodified-since Předpodmínka nesplněna (412 (Předpodmínka nesplněna))
x-ms-source-if-match Předpodmínka nesplněna (412 (Předpodmínka nesplněna))
x-ms-source-if-none-match Předpodmínka nesplněna (412 (Předpodmínka nesplněna))

Podmíněné operace tagů

Kromě standardních HTTP podmíněných hlaviček podporovaných službou Blob podporuje několik operací také podmínky proti tagům na zdroji blobu.

Podmíněná hlavička Description
x-ms-if-tags Verze 2019-12-12 a novší. Hodnota TagsPredicate . Specifikujte tuto hlavičku tak, aby provedla operaci pouze tehdy, pokud predikát vyhodnotí do true vůči značkám blobu.
x-ms-source-if-tags Verze 2019-12-12 a novší. Platí to pouze pro Copy Blob. Hodnota TagsPredicate . Specifikujte tuto hlavičku tak, aby provedla operaci pouze tehdy, pokud predikát vyhodnotí do true vůči značkám zdrojového blobu.

Pokud je v požadavku přítomen x-ms-if-tagsx-ms-source-if-tags or podmíněný hlavička a vyhodnocuje se TagsPredicate na false, služba Blob vrací chybový kód 412 (Precondition Failed) pro tuto operaci.

Volající musí mít povolení číst tagy na blobu, aby mohl použít x-ms-if-tags podmíněné hlavičky OR x-ms-source-if-tags .

Tagy Predikátová syntax

Služba Blob podporuje podmnožinu gramatiky klauzule ANSI SQL WHERE pro hodnotu hlavičky TagsPredicate . Podporují se následující operátory:

Operator Description Example
= Rovný Status = 'In Progress'
<> Nerovná se Status <> 'Done'
> Je větší než LastModified > '2018-06-18 20:51:26Z'
>= Větší nebo rovno Priority >= '05'
< Menší než Age < '032'
<= Menší než nebo rovno Reviewer <= 'Smith'
AND Logické a Name > 'C' AND Name < 'D'
Age > '032' AND Age < '100'
OR Logické nebo Status = 'Done' or LastModified > '2018-06-18 20:51:26Z'

Všechny hodnoty tagů jsou řetězce a podporované binární relační operátory používají lexikografické třídění hodnot tagů. Pro podporu neřetězcových datových typů, včetně čísel a dat, je nutné použít vhodné vyplňování a tříditelné formátování. Hodnoty tagů musí být uvedeny v jednotlivých uvozovkách.

Pokud jsou tagové názvy běžné SQL identifikátory, mohou být přítomny bez úniku. Pokud obsahují speciální znaky, musí být vymezeny dvojitými uvozovkami, například "TagName" = 'TagValue'.

Výrazy mohou zahrnovat porovnání pro více názvů a hodnot tagů. Závorky (( a )) mohou být použity k seskupení logických výrazů a řízení kanonického pořadí operací. A TagsPredicate může obsahovat maximálně 10 logických operací.

Služba úložiště odmítá jakýkoli požadavek obsahující neplatný výraz s chybovým kódem 400 (Špatný požadavek).

Viz také

Koncepty blob služeb