Určení podmíněných hlaviček pro operace služby Blob Service

Několik operací služby Blob Service podporuje použití podmíněných hlaviček. Podmíněné hlavičky, které se mají provést, můžete zadat pouze v případě, že byla splněna zadaná podmínka.

Služba Blob service 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 popsané v následující tabulce.

Podmíněné záhlaví Description
If-Modified-Since Hodnota DateTime . Tuto hlavičku zadejte, aby se operace prováděla pouze v případě, že byl prostředek změněn od zadaného času.
If-Unmodified-Since Hodnota DateTime . Tuto hlavičku zadejte, aby se operace prováděla pouze v případě, že prostředek nebyl změněn od zadaného data a času.
If-Match Hodnota ETag. Tuto hlavičku zadejte, aby se operace prováděla pouze v případě, že značka ETag prostředku odpovídá zadané hodnotě. Pro verze 2011-08-18 a novější lze eTag zadat v uvozovkách.
If-None-Match Hodnota ETag nebo zástupný znak (*). Tuto hlavičku zadejte, aby se operace prováděla pouze v případě, že značky ETag prostředku neodpovídají zadané hodnotě. Pro verze 2011-08-18 a novější lze eTag zadat v uvozovkách.

Zadejte zástupný znak (*) pro provedení operace pouze v případě, že prostředek neexistuje, a pokud existuje, operace selže.

Určení podmíněných hlaviček pro operace čtení služby Blob Service ve verzi 2013-08-15 nebo novější

Počínaje verzí 2013-08-15 podporují operace Get Blob a Get Blob Properties několik podmíněných hlaviček. Můžete zadat libovolnou kombinaci podporovaných podmíněných hlaviček. Služba Blob Service vyhodnotí 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 If-Match, služba Blob provede logickou OR operaci u všech zadaných hodnot před vyhodnocením celého výrazu. Pokud zadáte více hodnot 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 výsledkem je kód chyby 400 (Bad Request).

Tato funkce je povolená tak, aby splňovala specifikaci HTTP/1.1 a vyhovovala scénářům, ve kterých Content Delivery Network (CDN) nebo proxy server přidává další podmíněné hlavičky do žádosti o let. Níže jsou uvedeny příklady různých kombinací podmíněných hlaviček.

Příklad 1:

Zvažte požadavek Získat objekt blob obsahující hlavičky If-Match a If-Modified-Since hlavičky. Následující tabulka označuje výsledek, pokud se záhlaví vyhodnocují jednotlivě, a výsledek, pokud jsou vyhodnoceny v kombinaci.

Podmíněné hlavičky Výsledek, pokud se vyhodnotí jednotlivě Výsledek, pokud je vyhodnocen v kombinaci
If-Match 412 (předběžná podmínka selhala) 412 (předběžná podmínka selhala)
If-Modified-Since 200 (OK) 412 (předběžná podmínka selhala)
If-Match 412 (předběžná podmínka selhala) 412 (předběžná podmínka selhala)
If-Modified-Since 304 (neupravuje se) 412 (předběžná podmínka selhala)
If-Match 200 (OK) 200 (OK)
If-Modified-Since 200 (OK) 200 (OK)
If-Match 200 (OK) 304 (neupravuje se)
If-Modified-Since 304 (neupravuje se) 304 (neupravuje se)

Příklad 2:

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

Podmíněné hlavičky Výsledek, pokud se vyhodnotí jednotlivě Výsledek, pokud je vyhodnocen v kombinaci
If-None-Match 304 (neupravuje se) 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 (neupravuje se) 200 (OK)
If-None-Match 304 (neupravuje se) 304 (neupravuje se)
If-Modified-Since 304 (neupravuje se) 304 (neupravuje se)

Příklad 3:

Zvažte požadavek obsahující If-Modified-Sincea If-MatchIf-Unmodified-Since hlavičky.

Podmíněné hlavičky Výsledek, pokud se vyhodnotí jednotlivě Výsledek, pokud je vyhodnocen v kombinaci
If-Modified-Since 200 (OK) 412 (předběžná podmínka selhala)
If-Match 412 (předběžná podmínka selhala) 412 (předběžná podmínka selhala)
If-Unmodified-Since 200 (OK) 412 (předběžná podmínka selhala)
If-Modified-Since 200 (OK) 412 (předběžná podmínka selhala)
If-Match 200 (OK) 412 (předběžná podmínka selhala)
If-Unmodified-Since 412 (předběžná podmínka selhala) 412 (předběžná podmínka selhala)
If-Modified-Since 304 (neupravuje se) 412 (předběžná podmínka selhala)
If-Match 200 (OK) 412 (předběžná podmínka selhala)
If-Unmodified-Since 412 (předběžná podmínka selhala) 412 (předběžná podmínka selhala)
If-Modified-Since 304 (neupravuje se) 304 (neupravuje se)
If-Match 200 (OK) 304 (neupravuje se)
If-Unmodified-Since 200 (OK) 304 (neupravuje se)

Příklad 4:

Zvažte požadavek obsahující If-Modified-Since, If-None-MatchIf-Unmodified-Since a If-Match hlavičky.

Kombinace Individuální stavový kód HTTP Získání výsledku stavu objektu 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ředběžná podmínka selhala)
If-None-Match 304 (neupravuje se) 412 (předběžná podmínka selhala)
If-Unmodified-Since 412 (předběžná podmínka selhala) 412 (předběžná podmínka selhala)
If-Match 200 (OK) 412 (předběžná podmínka selhala)
If-Modified-Since 200 (OK) 200 (OK)
If-None-Match 304 (neupravuje se) 200 (OK)
If-Unmodified-Since 200 (OK) 200 (OK)
If-Match 200 (OK) 200 (OK)
If-Modified-Since 304 (neupravuje se) 412 (předběžná podmínka selhala)
If-None-Match 200 (OK) 412 (předběžná podmínka selhala)
If-Unmodified-Since 200 (OK) 412 (předběžná podmínka selhala)
If-Match 412 (předběžná podmínka selhala) 412 (předběžná podmínka selhala)
If-Modified-Since 304 (neupravuje se) 412 (předběžná podmínka selhala)
If-None-Match 200 (OK) 412 (předběžná podmínka selhala)
If-Unmodified-Since 412 (předběžná podmínka selhala) 412 (předběžná podmínka selhala)
If-Match 412 (předběžná podmínka selhala) 412 (předběžná podmínka selhala)
If-Modified-Since 304 (neupravuje se) 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 (neupravuje se) 412 (předběžná podmínka selhala)
If-None-Match 304 (neupravuje se) 412 (předběžná podmínka selhala)
If-Unmodified-Since 412 (předběžná podmínka selhala) 412 (předběžná podmínka selhala)
If-Match 200 (OK) 412 (předběžná podmínka selhala)

Určení podmíněných hlaviček pro operace čtení ve verzích starších než 2013-08-15 a pro operace zápisu (všechny verze)

Při volání operací čtení služby Blob Service (Získání vlastností objektů blob a získání objektů blob) s verzemi před 2013-08-15 a při volání jakékoli operace zápisu bez ohledu na verzi mějte na paměti následující:

  • Pokud požadavek určuje jak If-None-MatchIf-Modified-Since záhlaví, tak i na základě kritérií zadaných v If-None-Match.

  • Pokud požadavek určuje jak If-MatchIf-Unmodified-Since záhlaví, tak i na základě kritérií zadaných v If-Match.

  • S výjimkou dvou kombinací podmíněných hlaviček uvedených výše může požadavek zadat pouze jednu podmíněnou hlavičku. Určení více než jedné podmíněné hlavičky má za následek stavový kód 400 (Bad Request).

  • Pokud odpověď obsahuje značku ETag, před zpracováním značky ETag ověřte verzi požadavku a odpovědi. Například verze 2011-08-18 a novější vrátí uvozovku ETag, ale starší verze ne. Před vyhodnocením se ujistěte, že aplikace dokáže zpracovat oba formáty značky ETag.

  • RFC 2616 umožňuje v jedné hlavičce více hodnot značky ETag, ale požadavky na službu Blob mohou obsahovat pouze jednu hodnotu značky ETag. Zadání více než jedné hodnoty značky ETag má za následek stavový kód 400 (Bad Request).

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

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

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

(verze 2015-02-21 a novější)
Zápis If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

x-ms-if-tags
Připojit blok z adresy URL

(verze 2018-11-09 a novější)
Zápis If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

x-ms-if-tags
Zkopírování objektu blob Čtení a zápis Podmínky pro cílový objekt blob:

- If-Modified-Since

- If-Unmodified-Since

- If-Match

- If-None-Match

- x-ms-if-tags

Podmínky zdrojového objektu blob:

- 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
Odstranění objektu blob Zápis If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

x-ms-if-tags
Odstranění kontejneru Zápis If-Modified-Since

If-Unmodified-Since
Získání objektu blob Číst If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

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

If-Unmodified-Since

If-Match

If-None-Match

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

If-Unmodified-Since

If-Match

If-None-Match

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

(verze 2019-12-12 a novější)
Číst x-ms-if-tags
Získání seznamu blokovaných položek Číst x-ms-if-tags
Získání rozsahů stránek Číst If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

x-ms-if-tags
Operace Lease Blob Zápis If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

x-ms-if-tags
Zapůjčení kontejneru Zápis If-Modified-Since

If-Unmodified-Since
Vložení objektu blob z adresy URL Zápis If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Podmínky zdrojového objektu blob:

- 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 Zápis If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

x-ms-if-tags
Vložení adresy URL bloku

(verze 2018-03-28 a novější)
Zápis x-ms-source-If-Modified-Since

x-ms-source-If-Unmodified-Since

x-ms-source-If-Match

x-ms-source-If-None-Match
Vložit seznam bloků Zápis If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

x-ms-if-tags
Vložit stránku Zápis If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

x-ms-if-tags
Vložit stránku z adresy URL

(verze 2018-11-09 a novější)
Zápis If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

x-ms-if-tags
Nastavení metadat objektů blob Zápis If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

x-ms-if-tags
Nastavení vlastností objektu blob Zápis If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

x-ms-if-tags
Nastavení seznamu ACL kontejneru Zápis If-Modified-Since

If-Unmodified-Since
Nastavení metadat kontejneru Zápis If-Modified-Since
Nastavení značek objektů blob

(verze 2019-12-12 a novější)
Zápis x-ms-if-tags
Nastavení úrovně objektu blob Čtení nebo zápis x-ms-if-tags
Pořízení snímku objektu blob Číst If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

x-ms-if-tags
Nastavení zásad neměnnosti objektů blob Zápis If-Unmodified-Since

Následující operace s daty služby Blob Service v současné době nepodporují podmíněné hlavičky:

Kódy odpovědí HTTP pro operace podporující podmíněné hlavičky

Pokud požadavek obsahuje podmíněnou hlavičku a zadaná podmínka není splněna požadovaným prostředkem, vrátí služba Blob Service kód odpovědi HTTP. Vrácené kódy odpovědí jsou v souladu se specifikací protokolu HTTP/1.1 (RFC 2616).

Metody v klientské knihovně Azure .NET převedou tyto kódy chybových odpovědí na objekt StorageException.

Operace čtení

Následující tabulka označuje kódy odpovědí vrácené pro podmínku unmet pro každou podmíněnou hlavičku při operaci čtení. Operace čtení používají příkazy GET nebo HEAD.

Podmíněné záhlaví Kód odpovědi, pokud podmínka nebyla splněna
If-Modified-Since Neupravuje se (304 (neupravuje))
If-Unmodified-Since Podmínka selhala (412 (předběžná podmínka selhala))
If-Match Podmínka selhala (412 (předběžná podmínka selhala))
If-None-Match Neupravuje se (304 (neupravuje))

Podívejte se na výše uvedené příklady výsledků při použití více hlaviček s verzemi 2013-08-15 nebo novějšími.

Operace zápisu

Následující tabulka označuje kódy odpovědí vrácené pro podmínku unmet pro každou podmíněnou hlavičku při operaci zápisu. Operace zápisu používají příkazy PUT nebo DELETE.

Podmíněné záhlaví Kód odpovědi, pokud podmínka nebyla splněna
If-Modified-Since Podmínka selhala (412 (předběžná podmínka selhala))
If-Unmodified-Since Podmínka selhala (412 (předběžná podmínka selhala))
If-Match Podmínka selhala (412 (předběžná podmínka selhala))
If-None-Match Podmínka selhala (412 (předběžná podmínka selhala))

Operace kopírování

Následující tabulka označuje kódy odpovědí vrácené pro podmínku unmet pro každou podmíněnou hlavičku při operaci kopírování. Operace kopírování objektu blob používá příkazy PUT.

Podmíněné záhlaví Kód odpovědi, pokud podmínka nebyla splněna
If-Modified-Since Podmínka selhala (412 (předběžná podmínka selhala))
If-Unmodified-Since Podmínka selhala (412 (předběžná podmínka selhala))
If-Match Podmínka selhala (412 (předběžná podmínka selhala))
If-None-Match Podmínka selhala (412 (předběžná podmínka selhala))
x-ms-source-if-modified-since Podmínka selhala (412 (předběžná podmínka selhala))
x-ms-source-if-unmodified-since Podmínka selhala (412 (předběžná podmínka selhala))
x-ms-source-if-match Podmínka selhala (412 (předběžná podmínka selhala))
x-ms-source-if-none-match Podmínka selhala (412 (předběžná podmínka selhala))

Podmíněné operace značek

Kromě standardních podmíněných hlaviček HTTP podporovaných službou Blob Service podporuje několik operací také podmínky pro značky prostředku objektu blob.

Podmíněné záhlaví Description
x-ms-if-tags Verze 2019-12-12 a novější. Hodnota TagsPredicate . Tuto hlavičku zadejte, aby se operace prováděla pouze v případě, že se predikát vyhodnotí na true značky objektu blob.
x-ms-source-if-tags Verze 2019-12-12 a novější. Platí jenom pro kopírování objektů blob. Hodnota TagsPredicate . Tuto hlavičku zadejte, aby se operace prováděla pouze v případě, že se predikát vyhodnotí na true značky zdrojového objektu blob.

x-ms-if-tags Pokud se v požadavku nachází hlavička nebo x-ms-source-if-tags podmíněná hlavička a TagsPredicate vyhodnotí se jako false, služba Blob service vrátí kód chyby 412 (Předběžná podmínka se nezdařila) pro operaci.

Volající musí mít oprávnění ke čtení značek v objektu blob, aby mohl používat x-ms-if-tags hlavičky nebo x-ms-source-if-tags podmíněné hlavičky.

Syntaxe predikátu značek

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

Operátor Popis Příklad
= Je rovno Status = 'In Progress'
<> Není rovno Status <> 'Done'
> Větší než LastModified > '2018-06-18 20:51:26Z'
>= Větší než 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 značek jsou řetězce a podporované binární relační operátory používají lexikální řazení hodnot značek. Aby bylo možné podporovat jiné než řetězcové datové typy, včetně čísel a kalendářních dat, je nutné použít vhodné odsazení a řazení. Hodnoty značek musí být uzavřeny v jednoduchých uvozovkách.

Pokud jsou názvy značek běžné identifikátory SQL, mohou být přítomny bez zapouzdření; pokud obsahují nějaké speciální znaky, musí být oddělené dvojitými uvozovkami (např. "TagName" = 'TagValue').

Výrazy můžou zahrnovat porovnání pro více názvů značek a hodnot. Závorky (( a )) lze použít ke seskupení logických výrazů a řízení kanonického pořadí operací. A TagsPredicate může obsahovat maximálně deset (10) logických operací.

Služba úložiště odmítne všechny požadavky, které obsahují neplatný výraz s kódem chyby 400 (chybný požadavek).

Viz také

Koncepty služby Blob Service