Feltételes fejlécek megadása blobszolgáltatás-műveletekhez

Számos Blob-szolgáltatásművelet támogatja a feltételes fejlécek használatát. Feltételes fejléceket csak akkor adhat meg a művelet végrehajtásához, ha egy adott feltétel teljesült.

A Blob szolgáltatás a feltételes fejlécek HTTP/1.1 protokollspecifikációját követi.

Támogatott feltételes fejlécek

A támogatott feltételes fejléceket az alábbi táblázat ismerteti.

Feltételes fejléc Description
If-Modified-Since Egy DateTime érték. A dátumformátum az RFC 1123-at követi. További információ: Dátum-idő értékek ábrázolása fejlécekben. Ezt a fejlécet csak akkor adja meg a művelet végrehajtásához, ha az erőforrás a megadott időpont óta módosult.
If-Unmodified-Since Egy DateTime érték. A dátumformátum az RFC 1123-at követi. További információ: Dátum-idő értékek ábrázolása fejlécekben. Ezt a fejlécet csak akkor adja meg a művelet végrehajtásához, ha az erőforrás nem lett módosítva a megadott dátum/idő óta.
If-Match ETag-érték. Ezt a fejlécet csak akkor adja meg a művelet végrehajtásához, ha az erőforrás ETagje megegyezik a megadott értékkel. A 2011-08-18-s és újabb verziók esetében az ETag az idézőjelekben adható meg.
If-None-Match ETag-érték vagy helyettesítő karakter (*). Ezt a fejlécet csak akkor adja meg a művelet végrehajtásához, ha az erőforrás ETagje nem egyezik meg a megadott értékkel. A 2011-08-18-s és újabb verziók esetében az ETag az idézőjelekben adható meg.

Adja meg a helyettesítő karaktert (*), hogy csak akkor hajtsa végre a műveletet, ha az erőforrás nem létezik, és ha létezik, meghiúsul a művelet.

Feltételes fejlécek megadása a Blob Service olvasási műveleteihez a 2013-08-15-ös vagy újabb verzióban

A 2013-08-15-ös verziótól kezdődően a Blob lekérése és a Blob tulajdonságainak lekérése művelet több feltételes fejlécet is támogat. A támogatott feltételes fejlécek tetszőleges kombinációját megadhatja. A Blob szolgáltatás a következő kifejezésnek megfelelően értékeli ki ezeket a feltételeket:

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

Több vesszővel elválasztott értéket is megadhat a és If-None-Matcha számáraIf-Match. Ha több értéket ad meg a értékhez If-Match, akkor a Blob szolgáltatás logikai OR műveletet hajt végre az összes megadott értéken a teljes kifejezés kiértékelése előtt. Ha több értéket ad meg a értékhez if-None-Match, akkor a szolgáltatás logikai AND műveletet hajt végre a teljes kifejezés kiértékelése előtt. Ha több értéket ad meg a If-Modified-Since és If-Unmodified-Since a számára, az nem támogatott, és 400-ás hibakódot eredményez (Bad Request).

Ez a funkció azért van engedélyezve, hogy megfeleljen a HTTP/1.1 specifikációnak , és olyan helyzetekre szolgáljon, amikor egy tartalomkézbesítési hálózat (CDN) vagy proxykiszolgáló további feltételes fejléceket ad hozzá egy biztonsági kéréshez. Az alábbiakban néhány példát láthat a feltételes fejlécek különböző kombinációira.

1. példa:

Fontolja meg a és If-Modified-Since fejléceket tartalmazó Blob lekéréseIf-Match kérést. Az alábbi táblázat azt az eredményt jelzi, ha a fejlécek egyenként vannak kiértékelve, és az eredményt, ha azokat kombinálva értékelik ki.

Feltételes fejlécek Eredmény, ha egyenként van kiértékelve Eredmény, ha a kiértékelése kombinációban történik
If-Match 412 (Az előfeltétel nem sikerült) 412 (Az előfeltétel nem sikerült)
If-Modified-Since 200 (OK) 412 (Az előfeltétel nem sikerült)
If-Match 412 (Az előfeltétel nem sikerült) 412 (Az előfeltétel nem sikerült)
If-Modified-Since 304 (nincs módosítva) 412 (Az előfeltétel nem sikerült)
If-Match 200 (OK) 200 (OK)
If-Modified-Since 200 (OK) 200 (OK)
If-Match 200 (OK) 304 (nincs módosítva)
If-Modified-Since 304 (nincs módosítva) 304 (nincs módosítva)

2. példa:

Fontolja meg egy olyan kérést, amely tartalmazza If-None-Match és If-Modified-Since fejléceket tartalmaz.

Feltételes fejlécek Eredmény, ha egyenként van kiértékelve Eredmény, ha a kiértékelése kombinációban történik
If-None-Match 304 (nincs módosítva) 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 (nincs módosítva) 200 (OK)
If-None-Match 304 (nincs módosítva) 304 (nincs módosítva)
If-Modified-Since 304 (nincs módosítva) 304 (nincs módosítva)

3. példa:

Fontolja meg a , If-Match és If-Unmodified-Since fejléceket tartalmazó If-Modified-Sincekérést.

Feltételes fejlécek Eredmény, ha egyenként van kiértékelve Eredmény, ha a kiértékelése kombinációban történik
If-Modified-Since 200 (OK) 412 (Az előfeltétel nem sikerült)
If-Match 412 (Az előfeltétel nem sikerült) 412 (Az előfeltétel nem sikerült)
If-Unmodified-Since 200 (OK) 412 (Az előfeltétel nem sikerült)
If-Modified-Since 200 (OK) 412 (Az előfeltétel nem sikerült)
If-Match 200 (OK) 412 (Az előfeltétel nem sikerült)
If-Unmodified-Since 412 (Az előfeltétel nem sikerült) 412 (Az előfeltétel nem sikerült)
If-Modified-Since 304 (nincs módosítva) 412 (Az előfeltétel nem sikerült)
If-Match 200 (OK) 412 (Az előfeltétel nem sikerült)
If-Unmodified-Since 412 (Az előfeltétel sikertelen) 412 (Az előfeltétel sikertelen)
If-Modified-Since 304 (nincs módosítva) 304 (nincs módosítva)
If-Match 200 (OK) 304 (nincs módosítva)
If-Unmodified-Since 200 (OK) 304 (nincs módosítva)

4. példa:

Fontolja meg egy , If-None-Match, If-Unmodified-Since és If-Match fejléceket tartalmazó If-Modified-Sincekérést.

Kombináció Egyéni HTTP-állapotkód Blobállapot eredményének lekérése
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 (Az előfeltétel sikertelen)
If-None-Match 304 (nincs módosítva) 412 (Az előfeltétel sikertelen)
If-Unmodified-Since 412 (Az előfeltétel sikertelen) 412 (Az előfeltétel sikertelen)
If-Match 200 (OK) 412 (Az előfeltétel sikertelen)
If-Modified-Since 200 (OK) 200 (OK)
If-None-Match 304 (nincs módosítva) 200 (OK)
If-Unmodified-Since 200 (OK) 200 (OK)
If-Match 200 (OK) 200 (OK)
If-Modified-Since 304 (nincs módosítva) 412 (Az előfeltétel sikertelen)
If-None-Match 200 (OK) 412 (Az előfeltétel sikertelen)
If-Unmodified-Since 200 (OK) 412 (Az előfeltétel sikertelen)
If-Match 412 (Az előfeltétel sikertelen) 412 (Az előfeltétel sikertelen)
If-Modified-Since 304 (nincs módosítva) 412 (Az előfeltétel sikertelen)
If-None-Match 200 (OK) 412 (Az előfeltétel sikertelen)
If-Unmodified-Since 412 (Az előfeltétel sikertelen) 412 (Az előfeltétel sikertelen)
If-Match 412 (Az előfeltétel sikertelen) 412 (Az előfeltétel sikertelen)
If-Modified-Since 304 (nincs módosítva) 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 (nincs módosítva) 412 (Az előfeltétel sikertelen)
If-None-Match 304 (nincs módosítva) 412 (Az előfeltétel sikertelen)
If-Unmodified-Since 412 (Az előfeltétel sikertelen) 412 (Az előfeltétel sikertelen)
If-Match 200 (OK) 412 (Az előfeltétel sikertelen)

Feltételes fejlécek megadása az olvasási műveletekhez a 2013-08-15 előtti verziókban és az írási műveletekhez (minden verzió)

Ha a 2013-08-15 előtti verziójú Blob szolgáltatás olvasási műveleteit (Blob lekérése és Blob tulajdonságainak lekérése) hívja meg, és ha bármilyen írási műveletet meghív a verziótól függetlenül, tartsa szem előtt az alábbiakat:

  • Ha egy kérés a és If-Modified-Since a If-None-Match fejlécet is megadja, a rendszer a kérést a megadott If-None-Matchfeltételek alapján értékeli ki.

  • Ha egy kérés a és If-Unmodified-Since a If-Match fejlécet is megadja, a rendszer a kérést a megadott If-Matchfeltételek alapján értékeli ki.

  • A fenti feltételes fejlécek két kombinációjának kivételével a kérések csak egyetlen feltételes fejlécet adhatnak meg. Ha több feltételes fejlécet ad meg, az a 400 -os állapotkódot eredményezi (Bad Request).

  • Ha egy válasz ETaget is tartalmaz, ellenőrizze a kérés és a válasz verzióját az ETag feldolgozása előtt. Például a 2011-08-18-es és újabb verziók idézőjeles ETaget adnak vissza, a régebbi verziók azonban nem. A kiértékelés előtt győződjön meg arról, hogy az alkalmazás mindkét ETag-formátumot képes feldolgozni.

  • Az RFC 2616 több ETag-értéket engedélyez egyetlen fejlécben, de a Blob szolgáltatásnak küldött kérések csak egy ETag-értéket tartalmazhatnak. Ha több ETag-értéket ad meg, az 400 -os állapotkódot eredményezi (Bad Request).

Feltételes fejléceket támogató műveletek

A feltételes fejléceket támogató műveleteket az alábbi táblázat ismerteti.

REST-művelet Művelettípus Támogatott feltételes fejlécek
Hozzáfűző blokk

(2015-02-21-es és újabb verziók)
Írás If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

x-ms-if-tags
Blokk hozzáfűzése URL-címből

(2018-11-09-es és újabb verziók)
Írás If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

x-ms-if-tags
Copy Blob Olvasás és írás A célblob feltételei:

- If-Modified-Since

- If-Unmodified-Since

- Ha-egyezés

- If-None-Match

- x-ms-if-tags

A forrásblob feltételei:

- 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
Delete Blob Írás If-Modified-Since

If-Unmodified-Since

Ha-egyezés

If-None-Match

x-ms-if-tags
Tároló törlése Írás If-Modified-Since

If-Unmodified-Since
Blob lekérése Olvasás If-Modified-Since

If-Unmodified-Since

Ha-egyezés

If-None-Match

x-ms-if-tags
Blob metaadatainak lekérése Olvasás If-Modified-Since

If-Unmodified-Since

Ha-egyezés

If-None-Match

x-ms-if-tags
Get Blob Properties Olvasás If-Modified-Since

If-Unmodified-Since

Ha-egyezés

If-None-Match

x-ms-if-tags
Blobcímkék lekérése

(2019-12-12-es és újabb verzió)
Olvasás x-ms-if-tags
Blokklista lekérése Olvasás x-ms-if-tags
Oldaltartományok lekérése Olvasás If-Modified-Since

If-Unmodified-Since

Ha-egyezés

If-None-Match

x-ms-if-tags
Blobbérlet Írás If-Modified-Since

If-Unmodified-Since

Ha-egyezés

If-None-Match

x-ms-if-tags
Tároló bérlete Írás If-Modified-Since

If-Unmodified-Since
Blob elhelyezése URL-címről Írás If-Modified-Since

If-Unmodified-Since

Ha-egyezés

If-None-Match

A forrásblob feltételei:

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

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

- x-ms-source-If-Match

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

Put Blob Írás If-Modified-Since

If-Unmodified-Since

Ha-egyezés

If-None-Match

x-ms-if-tags
Blokk elhelyezése URL-címről

(2018-03-28-es és újabb verzió)
Írás 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 Írás If-Modified-Since

If-Unmodified-Since

Ha-egyezés

If-None-Match

x-ms-if-tags
Oldal elhelyezése Írás If-Modified-Since

If-Unmodified-Since

Ha-egyezés

If-None-Match

x-ms-if-tags
Oldal elhelyezése URL-címről

(2018-11-09-es és újabb verzió)
Írás If-Modified-Since

If-Unmodified-Since

Ha-egyezés

If-None-Match

x-ms-if-tags
Blob-metaadatok beállítása Írás If-Modified-Since

If-Unmodified-Since

Ha-egyezés

If-None-Match

x-ms-if-tags
Blobtulajdonságok beállítása Írás If-Modified-Since

If-Unmodified-Since

Ha-egyezés

If-None-Match

x-ms-if-tags
Tároló ACL-ének beállítása Írás If-Modified-Since

If-Unmodified-Since
Tároló metaadatainak beállítása Írás If-Modified-Since
Blobcímkék beállítása

(2019-12-12-es és újabb verzió)
Írás x-ms-if-tags
Set Blob Tier Olvasás vagy írás x-ms-if-tags
Snapshot Blob Olvasás If-Modified-Since

If-Unmodified-Since

Ha-egyezés

If-None-Match

x-ms-if-tags
Blob nem módosíthatósági szabályzatának beállítása Írás If-Unmodified-Since

A blobszolgáltatás következő adatműveletei jelenleg nem támogatják a feltételes fejléceket:

HTTP-válaszkódok feltételes fejléceket támogató műveletekhez

Ha a kérelem feltételes fejlécet tartalmaz, és a megadott feltételt nem teljesíti a kért erőforrás, a Blob szolgáltatás egy HTTP-válaszkódot ad vissza. A visszaadott válaszkódok összhangban vannak a HTTP/1.1 protokoll specifikációjával (RFC 2616).

Az Azure .NET-ügyfélkódtár metódusai ezeket a hibaválasz-kódokat StorageException objektummá alakítják.

Olvasási műveletek

Az alábbi táblázat az egyes feltételes fejlécek nem teljesült feltételéhez visszaadott válaszkódokat jelzi, amikor a művelet olvasási művelet. Az olvasási műveletek a GET vagy a HEAD parancsot használják.

Feltételes fejléc Válaszkód, ha a feltétel nem teljesült
If-Modified-Since Nincs módosítva (304 (Nem módosított))
If-Unmodified-Since Az előkondicionálás sikertelen (412 (Az előfeltétel sikertelen))
If-Match Az előkondicionálás sikertelen (412 (Az előfeltétel sikertelen))
If-None-Match Nincs módosítva (304 (Nem módosított))

Ha több fejlécet használ a 2013-08-15-ös vagy újabb verzióval, tekintse meg a fenti példákat.

Írási műveletek

Az alábbi táblázat az egyes feltételes fejlécek nem teljesült feltételéhez visszaadott válaszkódokat jelzi, ha a művelet írási művelet. Az írási műveletek a PUT vagy a DELETE parancsot használják.

Feltételes fejléc Válaszkód, ha a feltétel nem teljesült
If-Modified-Since Az előkondicionálás sikertelen (412 (Az előfeltétel sikertelen))
If-Unmodified-Since Az előkondicionálás sikertelen (412 (Az előfeltétel sikertelen))
If-Match Az előkondicionálás sikertelen (412 (Az előfeltétel sikertelen))
If-None-Match Az előkondicionálás sikertelen (412 (Az előfeltétel sikertelen))

Másolási műveletek

Az alábbi táblázat az egyes feltételes fejlécek nem teljesült feltételéhez visszaadott válaszkódokat jelzi, ha a művelet másolási művelet. A Blob másolása művelet a PUT parancsot használja.

Feltételes fejléc Válaszkód, ha a feltétel nem teljesült
If-Modified-Since Az előkondicionálás sikertelen (412 (Az előfeltétel sikertelen))
If-Unmodified-Since Az előkondicionálás sikertelen (412 (Az előfeltétel sikertelen))
If-Match Az előkondicionálás sikertelen (412 (Az előfeltétel sikertelen))
If-None-Match Az előkondicionálás sikertelen (412 (Az előfeltétel sikertelen))
x-ms-source-if-modified-since Az előfeltétel sikertelen (412 (Az előfeltétel sikertelen))
x-ms-source-if-unmodified-since Az előfeltétel sikertelen (412 (Az előfeltétel sikertelen))
x-ms-source-if-match Az előfeltétel sikertelen (412 (Az előfeltétel sikertelen))
x-ms-source-if-none-match Az előfeltétel sikertelen (412 (Az előfeltétel sikertelen))

Címkék feltételes műveletei

A Blob szolgáltatás által támogatott szabványos HTTP-feltételes fejlécek mellett több művelet is támogatja a bloberőforrás címkéinek feltételeit.

Feltételes fejléc Description
x-ms-if-tags 2019-12-12-es és újabb verzió. Egy TagsPredicate érték. Adja meg ezt a fejlécet, hogy csak akkor hajtsa végre a műveletet, ha a predikátum kiértékeli true a blob címkéit.
x-ms-source-if-tags 2019-12-12-es és újabb verzió. Csak a Blob másolása szolgáltatásra vonatkozik. Egy TagsPredicate érték. Ezt a fejlécet csak akkor adja meg a művelet végrehajtásához, ha a predikátum kiértékeli true a értéket a forrásblob címkéivel szemben.

Ha a x-ms-if-tags vagy x-ms-source-if-tags a feltételes fejléc jelen van egy kérelemben, és a TagsPredicate kiértékelési falseértéke , a Blob szolgáltatás a 412-s hibakódot (az előfeltétel sikertelen) adja vissza a művelethez.

A hívónak engedéllyel kell rendelkeznie a blob címkéinek olvasásához a vagy x-ms-source-if-tags feltételes x-ms-if-tags fejlécek használatához.

Címkék predikátumszintaxisa

A Blob szolgáltatás támogatja az ANSI SQL WHERE záradék nyelvtanának egy részét a TagsPredicate fejléc értékéhez. A következő operátorok támogatottak:

Operátor Leírás Példa
= Egyenlő Status = 'In Progress'
<> Nem egyenlő Status <> 'Done'
> Nagyobb, mint LastModified > '2018-06-18 20:51:26Z'
>= Nagyobb vagy egyenlő mint Priority >= '05'
< Kisebb mint Age < '032'
<= Kisebb vagy egyenlő mint Reviewer <= 'Smith'
AND Logikai és Name > 'C' AND Name < 'D'
Age > '032' AND Age < '100'
OR Logikai vagy Status = 'Done' or LastModified > '2018-06-18 20:51:26Z'

Minden címkeérték sztring, a támogatott bináris relációs operátorok pedig a címkeértékek lexikográfiai rendezését használják. A nem sztring típusú adattípusok( például számok és dátumok) támogatásához megfelelő kitöltést és rendezhető formázást kell alkalmazni. A címkeértékeket szimpla idézőjelek közé kell tenni.

Ha a címkenevek normál SQL-azonosítók, akkor előfordulhat, hogy azok a rendszerből való kikerülés nélkül jelen vannak; ha speciális karaktereket tartalmaznak, dupla idézőjelekkel kell elválasztani őket (pl. "TagName" = "TagValue").

A kifejezések több címkenév és érték összehasonlítását is tartalmazhatják. A zárójel (( és )) a logikai kifejezések csoportosítására és a canonikus működési sorrend szabályozására használható. A TagsPredicate legfeljebb tíz (10) logikai műveletet tartalmazhat.

A tárolási szolgáltatás elutasítja a 400-as hibakódú (hibás kérés) érvénytelen kifejezést tartalmazó kéréseket.

Lásd még:

A Blob szolgáltatással kapcsolatos fogalmak