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-Match
a 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-Since
ké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-Since
ké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
aIf-None-Match
fejlécet is megadja, a rendszer a kérést a megadottIf-None-Match
feltételek alapján értékeli ki.Ha egy kérés a és
If-Unmodified-Since
aIf-Match
fejlécet is megadja, a rendszer a kérést a megadottIf-Match
felté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 | Í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.