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 můžete zadat k provedení operace 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 popsány v následující tabulce.

Podmíněná hlavička Description
If-Modified-Since Hodnota DateTime . Formát data odpovídá dokumentu RFC 1123. Další informace najdete v tématu Znázornění hodnot data a času v záhlavích. Tuto hlavičku zadejte, pokud chcete operaci provést pouze v případě, že se prostředek od zadaného času změnil.
If-Unmodified-Since Hodnota DateTime . Formát data odpovídá dokumentu RFC 1123. Další informace najdete v tématu Znázornění hodnot data a času v záhlavích. Tuto hlavičku zadejte, pokud chcete operaci provést pouze v případě, že prostředek nebyl od zadaného data a času změněn.
If-Match Hodnota ETag. Tuto hlavičku zadejte, pokud chcete operaci provést pouze v případě, že značka ETag prostředku odpovídá zadané hodnotě. Pro verze 2011-08-18 a novější je možné zadat eTag v uvozovkách.
If-None-Match Hodnota ETag nebo zástupný znak (*). Tuto hlavičku zadejte, pokud chcete operaci provést pouze v případě, že značka ETag prostředku neodpovídá zadané hodnotě. Pro verze 2011-08-18 a novější je možné zadat eTag v uvozovkách.

Zadejte zástupný znak (*), který provede operaci pouze v případě, že prostředek neexistuje, a pokud existuje, operaci se nezdaří.

Zadání 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 více 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)

Pro a If-None-Matchmůžete také zadat více hodnot If-Match oddělených čárkami. Pokud pro If-Matchzadáte více hodnot, služba Blob Service před vyhodnocením celého výrazu provede logickou OR operaci se všemi zadanými hodnotami. Pokud pro if-None-Matchzadáte více hodnot, služba před vyhodnocením celého výrazu provede logickou AND operaci. 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á za účelem zajištění souladu se specifikací HTTP/1.1 a pro scénáře, kdy služba Content Delivery Network (CDN) nebo proxy server přidá do příchozího požadavku další podmíněné hlavičky. Níže je uvedeno několik příkladů různých kombinací podmíněných hlaviček.

Příklad 1:

Zvažte požadavek na získání objektuIf-Match blob obsahující hlavičky a If-Modified-Since . Následující tabulka uvádí výsledek, pokud se hlavičky vyhodnocují jednotlivě, a výsledek, pokud se vyhodnocují v kombinaci.

Podmíněné hlavičky Výsledek, pokud se vyhodnocuje jednotlivě Výsledek, pokud je vyhodnocen v kombinaci
If-Match 412 (Předběžná podmínka se nezdařila) 412 (Předběžná podmínka se nezdařila)
If-Modified-Since 200 (OK) 412 (Předběžná podmínka se nezdařila)
If-Match 412 (Předběžná podmínka se nezdařila) 412 (Předběžná podmínka se nezdařila)
If-Modified-Since 304 (Neupravuje se) 412 (Předběžná podmínka se nezdařila)
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:

Představte si požadavek obsahující If-None-Match hlavičky a If-Modified-Since .

Podmíněné hlavičky Výsledek, pokud se vyhodnocuje 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-Sincehlavičky , If-Match a If-Unmodified-Since .

Podmíněné hlavičky Výsledek, pokud se vyhodnocuje jednotlivě Výsledek, pokud je vyhodnocen v kombinaci
If-Modified-Since 200 (OK) 412 (Předběžná podmínka se nezdařila)
If-Match 412 (Předběžná podmínka se nezdařila) 412 (Předběžná podmínka se nezdařila)
If-Unmodified-Since 200 (OK) 412 (Předběžná podmínka se nezdařila)
If-Modified-Since 200 (OK) 412 (Předběžná podmínka se nezdařila)
If-Match 200 (OK) 412 (Předběžná podmínka se nezdařila)
If-Unmodified-Since 412 (Předběžná podmínka se nezdařila) 412 (Předběžná podmínka se nezdařila)
If-Modified-Since 304 (Neupravuje se) 412 (Předběžná podmínka se nezdařila)
If-Match 200 (OK) 412 (Předběžná podmínka se nezdařila)
If-Unmodified-Since 412 (Předběžná podmínka se nezdařila) 412 (Předběžná podmínka se nezdařila)
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-Sincehlavičky , If-None-MatchIf-Unmodified-Since a If-Match .

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 se nezdařila)
If-None-Match 304 (Neupravuje se) 412 (Předběžná podmínka se nezdařila)
If-Unmodified-Since 412 (Předběžná podmínka se nezdařila) 412 (Předběžná podmínka se nezdařila)
If-Match 200 (OK) 412 (Předběžná podmínka se nezdařila)
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 se nezdařila)
If-None-Match 200 (OK) 412 (Předběžná podmínka se nezdařila)
If-Unmodified-Since 200 (OK) 412 (Předběžná podmínka se nezdařila)
If-Match 412 (Předběžná podmínka se nezdařila) 412 (Předběžná podmínka se nezdařila)
If-Modified-Since 304 (Neupravuje se) 412 (Předběžná podmínka se nezdařila)
If-None-Match 200 (OK) 412 (Předběžná podmínka se nezdařila)
If-Unmodified-Since 412 (Předběžná podmínka se nezdařila) 412 (Předběžná podmínka se nezdařila)
If-Match 412 (Předběžná podmínka se nezdařila) 412 (Předběžná podmínka se nezdařila)
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 se nezdařila)
If-None-Match 304 (Neupravuje se) 412 (Předběžná podmínka se nezdařila)
If-Unmodified-Since 412 (Předběžná podmínka se nezdařila) 412 (Předběžná podmínka se nezdařila)
If-Match 200 (OK) 412 (Předběžná podmínka se nezdařila)

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í objektu blob a Získání vlastností objektu blob) s verzemi staršími než 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 hlavičky If-None-Match i If-Modified-Since , vyhodnocuje se na základě kritérií zadaných v If-None-Match.

  • Pokud požadavek určuje hlavičky If-Match i If-Unmodified-Since , vyhodnocuje se 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. Zadáním více než jedné podmíněné hlavičky vznikne 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ší vrací uvozovanou eTag, ale starší verze ne. Ujistěte se, že vaše aplikace může před vyhodnocením zpracovat oba formáty značky ETag.

  • RFC 2616 umožňuje v jedné hlavičce více hodnot ETag, ale požadavky na službu Blob Service můžou obsahovat jenom jednu hodnotu 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ší)
Write If-Modified-Since

Pokud-nezměněno-od

If-Match

If-None-Match

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

(verze 9. 11. 2018 a novější)
Write If-Modified-Since

Pokud-nezměněno-od

If-Match

If-None-Match

x-ms-if-tags
Zkopírování objektu blob Čtení a zápis Podmínky v cílovém objektu blob:

- If-Modified-Since

- Pokud-nezměněno-od

- If-Match

- If-None-Match

- x-ms-if-tags

Podmínky pro zdrojový objekt 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 Write If-Modified-Since

Pokud-nezměněno-od

If-Match

If-None-Match

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

Pokud-nezměněno-od
Získání objektu blob Read If-Modified-Since

Pokud-nezměněno-od

If-Match

If-None-Match

x-ms-if-tags
Získání metadat objektu blob Read If-Modified-Since

Pokud-nezměněno-od

If-Match

If-None-Match

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

Pokud-nezměněno-od

If-Match

If-None-Match

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

(verze 2019-12-12 a novější)
Read x-ms-if-tags
Získat seznam blokovaných Read x-ms-if-tags
Získat rozsahy stránek Read If-Modified-Since

Pokud-nezměněno-od

If-Match

If-None-Match

x-ms-if-tags
Operace Lease Blob Write If-Modified-Since

Pokud-nezměněno-od

If-Match

If-None-Match

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

Pokud-nezměněno-od
Vložení objektu blob z adresy URL Write If-Modified-Since

Pokud-nezměněno-od

If-Match

If-None-Match

Podmínky pro zdrojový objekt 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 Write If-Modified-Since

Pokud-nezměněno-od

If-Match

If-None-Match

x-ms-if-tags
Put Block From URL

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

x-ms-source-If-Unmodified-Since

x-ms-source-If-Match

x-ms-source-If-None-Match
Put Block List Write If-Modified-Since

Pokud-nezměněno-od

If-Match

If-None-Match

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

Pokud-nezměněno-od

If-Match

If-None-Match

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

(verze 9. 11. 2018 a novější)
Write If-Modified-Since

Pokud-nezměněno-od

If-Match

If-None-Match

x-ms-if-tags
Nastavení metadat objektu blob Write If-Modified-Since

Pokud-nezměněno-od

If-Match

If-None-Match

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

Pokud-nezměněno-od

If-Match

If-None-Match

x-ms-if-tags
Nastavit seznam ACL kontejneru Write If-Modified-Since

Pokud-nezměněno-od
Nastavení metadat kontejneru Write If-Modified-Since
Nastavení značek objektů blob

(verze 2019-12-12 a novější)
Write x-ms-if-tags
Nastavení úrovně objektu blob Write x-ms-if-tags
Pořízení snímku objektu blob Read If-Modified-Since

Pokud-nezměněno-od

If-Match

If-None-Match

x-ms-if-tags
Nastavení zásad neměnnosti objektů blob Write Pokud-nezměněno-od

Následující datové operace služby Blob Service aktuálně 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 zadanou podmínku nesplňuje požadovaný prostředek, 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řevádějí tyto kódy chybových odpovědí na objekt StorageException.

Operace čtení

Následující tabulka uvádí kódy odpovědí vrácené pro nesplněnou podmínku pro každou podmíněnou hlavičku, pokud je operace operace čtení. Operace čtení používají příkazy GET nebo HEAD.

Podmíněná hlavička Kód odpovědi, pokud není splněna podmínka
If-Modified-Since Neupravěný (304 (Neupravován))
If-Unmodified-Since Předběžná podmínka selhala (412 (Předběžná podmínka se nezdařila))
If-Match Předběžná podmínka selhala (412 (Předběžná podmínka se nezdařila))
If-None-Match Neupravěný (304 (Neupravován))

Výsledky při použití více hlaviček s verzemi 2013-08-15 nebo novějšími najdete ve výše uvedených příkladech.

Operace zápisu

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

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

Operace kopírování

Následující tabulka uvádí kódy odpovědí vrácené pro nesplněnou podmínku pro každou podmíněnou hlavičku, pokud se jedná o operaci kopírování. Operace kopírování objektu blob používá příkazy PUT.

Podmíněná hlavička Kód odpovědi, pokud není splněna podmínka
If-Modified-Since Předběžná podmínka selhala (412 (Předběžná podmínka se nezdařila))
If-Unmodified-Since Předběžná podmínka selhala (412 (Předběžná podmínka se nezdařila))
If-Match Předběžná podmínka selhala (412 (Předběžná podmínka se nezdařila))
If-None-Match Předběžná podmínka selhala (412 (Předběžná podmínka se nezdařila))
x-ms-source-if-modified-since Předběžná podmínka selhala (412 (předběžná podmínka selhala))
x-ms-source-if-unmodified-since Předběžná podmínka selhala (412 (předběžná podmínka selhala))
x-ms-source-if-match Předběžná podmínka selhala (412 (předběžná podmínka selhala))
x-ms-source-if-none-match Předběžná 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 . Zadáním této hlavičky provedete operaci pouze v případě, že se predikát vyhodnotí jako true proti značkám 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 pro provedení operace pouze v případě, že se predikát vyhodnotí jako proti značkám true zdrojového objektu blob.

x-ms-if-tags Pokud je v požadavku přítomna podmíněná hlavička nebo x-ms-source-if-tags a TagsPredicate výsledek se vyhodnotí jako false, vrátí služba Blob Service pro operaci kód chyby 412 (Předběžná podmínka selhala).

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

Syntaxe predikátu značek

Služba Blob Service podporuje podmnožinu gramatiky klauzule WHERE ANSI SQL pro hodnotu hlavičky TagsPredicate . 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í lexikografické ř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 seřaditelné formátování. Hodnoty značek musí být uzavřeny v jednoduchých uvozovkách.

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

Výrazy můžou obsahovat porovnání více názvů a hodnot značek. Závorky (( a )) se dají použít k 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