Ange villkorsstyrda rubriker för Blob Service-åtgärder
Flera Blob Service-åtgärder stöder användning av villkorsstyrda rubriker. Du kan ange villkorsstyrda rubriker för att utföra en åtgärd endast om ett angivet villkor har uppfyllts.
Blob-tjänsten följer HTTP/1.1-protokollspecifikationen för villkorliga huvuden.
Villkorsstyrda rubriker som stöds
De villkorsstyrda rubriker som stöds beskrivs i följande tabell.
Villkorsstyrd rubrik | Description |
---|---|
If-Modified-Since |
Ett DateTime värde. Datumformatet följer RFC 1123. Mer information finns i Representation av datum-tidsvärden i rubriker. Ange det här huvudet för att utföra åtgärden endast om resursen har ändrats sedan den angivna tiden. |
If-Unmodified-Since |
Ett DateTime värde. Datumformatet följer RFC 1123. Mer information finns i Representation av datum-tidsvärden i rubriker. Ange det här huvudet för att utföra åtgärden endast om resursen inte har ändrats sedan det angivna datumet/tiden. |
If-Match |
Ett ETag-värde. Ange det här huvudet för att utföra åtgärden endast om resursens ETag matchar det angivna värdet. För versionerna 2011-08-18 och senare kan ETag anges med citattecken. |
If-None-Match |
Ett ETag-värde eller jokertecknet (*). Ange det här huvudet för att utföra åtgärden endast om resursens ETag inte matchar det angivna värdet. För versionerna 2011-08-18 och senare kan ETag anges med citattecken. Ange jokertecknet (*) för att utföra åtgärden endast om resursen inte finns och misslyckas om åtgärden finns. |
Ange villkorliga rubriker för blobtjänstläsningsåtgärder i version 2013-08-15 eller senare
Från och med version 2013-08-15 stöder åtgärderna Hämta blobb - och Hämta blobegenskaper flera villkorsstyrda rubriker. Du kan ange valfri kombination av villkorsstyrda rubriker som stöds. Blob-tjänsten utvärderar dessa villkor enligt följande uttryck:
If-Match && If-Unmodified-Since && (If-None-Match || If-Modified-Since)
Du kan också ange flera kommaavgränsade värden för If-Match
och If-None-Match
. Om du anger flera värden för If-Match
utför Blob-tjänsten en logisk OR
åtgärd på alla angivna värden innan du utvärderar hela uttrycket. Om du anger flera värden för if-None-Match
utför tjänsten en logisk AND
åtgärd innan hela uttrycket utvärderas. Att ange flera värden för If-Modified-Since
och If-Unmodified-Since
stöds inte och resulterar i felkod 400 (Bad Request
).
Den här funktionen är aktiverad för att uppfylla HTTP/1.1-specifikationen och för att hantera scenarier där ett nätverk för innehållsleverans (CDN) eller proxyserver lägger till ytterligare villkorsstyrda huvuden i en inflight-begäran. Nedan visas några exempel på olika kombinationer av villkorsstyrda rubriker.
Exempel 1:
Överväg att hämta blobbegäran som innehåller huvudena If-Match
och If-Modified-Since
. Följande tabell anger resultatet om rubrikerna utvärderas individuellt och resultatet om de utvärderas i kombination.
Villkorsstyrda rubriker | Resultat om det utvärderas individuellt | Resultat om det utvärderas i kombination |
---|---|---|
If-Match |
412 (Förhandsvillkoret misslyckades) | 412 (Förhandsvillkoret misslyckades) |
If-Modified-Since |
200 (OK) | 412 (Förhandsvillkoret misslyckades) |
If-Match |
412 (Förhandsvillkoret misslyckades) | 412 (Förhandsvillkoret misslyckades) |
If-Modified-Since |
304 (ändras inte) | 412 (Förhandsvillkoret misslyckades) |
If-Match |
200 (OK) | 200 (OK) |
If-Modified-Since |
200 (OK) | 200 (OK) |
If-Match |
200 (OK) | 304 (ändras inte) |
If-Modified-Since |
304 (ändras inte) | 304 (ändras inte) |
Exempel 2:
Överväg en begäran som innehåller If-None-Match
och If-Modified-Since
rubriker.
Villkorsstyrda rubriker | Resultat om det utvärderas individuellt | Resultat om det utvärderas i kombination |
---|---|---|
If-None-Match |
304 (ändras inte) | 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 (ändras inte) | 200 (OK) |
If-None-Match |
304 (ändras inte) | 304 (ändras inte) |
If-Modified-Since |
304 (ändras inte) | 304 (ändras inte) |
Exempel 3:
Överväg en begäran som innehåller If-Modified-Since
, If-Match
och If-Unmodified-Since
rubriker.
Villkorsstyrda rubriker | Resultat om det utvärderas individuellt | Resultat om det utvärderas i kombination |
---|---|---|
If-Modified-Since |
200 (OK) | 412 (Förhandsvillkoret misslyckades) |
If-Match |
412 (Förhandsvillkoret misslyckades) | 412 (Förhandsvillkoret misslyckades) |
If-Unmodified-Since |
200 (OK) | 412 (Förhandsvillkoret misslyckades) |
If-Modified-Since |
200 (OK) | 412 (Förhandsvillkoret misslyckades) |
If-Match |
200 (OK) | 412 (Förhandsvillkoret misslyckades) |
If-Unmodified-Since |
412 (Förhandsvillkoret misslyckades) | 412 (Förhandsvillkoret misslyckades) |
If-Modified-Since |
304 (ändras inte) | 412 (Förhandsvillkoret misslyckades) |
If-Match |
200 (OK) | 412 (Förhandsvillkoret misslyckades) |
If-Unmodified-Since |
412 (Förhandsvillkoret misslyckades) | 412 (Förhandsvillkoret misslyckades) |
If-Modified-Since |
304 (ändras inte) | 304 (ändras inte) |
If-Match |
200 (OK) | 304 (ändras inte) |
If-Unmodified-Since |
200 (OK) | 304 (ändras inte) |
Exempel 4:
Överväg en begäran som innehåller If-Modified-Since
, If-None-Match
If-Unmodified-Since
och If-Match
rubriker.
Kombination | Enskild http-statuskod | Hämta blobstatusresultat |
---|---|---|
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 (Förhandsvillkoret misslyckades) |
If-None-Match |
304 (ändras inte) | 412 (Förhandsvillkoret misslyckades) |
If-Unmodified-Since |
412 (Förhandsvillkoret misslyckades) | 412 (Förhandsvillkoret misslyckades) |
If-Match |
200 (OK) | 412 (Förhandsvillkoret misslyckades) |
If-Modified-Since |
200 (OK) | 200 (OK) |
If-None-Match |
304 (ändras inte) | 200 (OK) |
If-Unmodified-Since |
200 (OK) | 200 (OK) |
If-Match |
200 (OK) | 200 (OK) |
If-Modified-Since |
304 (ändras inte) | 412 (Förhandsvillkoret misslyckades) |
If-None-Match |
200 (OK) | 412 (Förhandsvillkoret misslyckades) |
If-Unmodified-Since |
200 (OK) | 412 (Förhandsvillkoret misslyckades) |
If-Match |
412 (Förhandsvillkoret misslyckades) | 412 (Förhandsvillkoret misslyckades) |
If-Modified-Since |
304 (ändras inte) | 412 (Förhandsvillkoret misslyckades) |
If-None-Match |
200 (OK) | 412 (Förhandsvillkoret misslyckades) |
If-Unmodified-Since |
412 (Förhandsvillkoret misslyckades) | 412 (Förhandsvillkoret misslyckades) |
If-Match |
412 (Förhandsvillkoret misslyckades) | 412 (Förhandsvillkoret misslyckades) |
If-Modified-Since |
304 (ändras inte) | 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 (ändras inte) | 412 (Förhandsvillkoret misslyckades) |
If-None-Match |
304 (ändras inte) | 412 (Förhandsvillkoret misslyckades) |
If-Unmodified-Since |
412 (Förhandsvillkoret misslyckades) | 412 (Förhandsvillkoret misslyckades) |
If-Match |
200 (OK) | 412 (Förhandsvillkoret misslyckades) |
Ange villkorsstyrda rubriker för läsåtgärder i versioner före 2013-08-15 och för skrivåtgärder (alla versioner)
När du anropar läsåtgärder för Blob-tjänsten (Hämta blob och Hämta blobegenskaper) med versioner före 2013-08-15 och när du anropar någon skrivåtgärd oavsett version bör du tänka på följande:
Om en begäran anger både huvudena
If-None-Match
ochIf-Modified-Since
utvärderas begäran baserat på de kriterier som anges iIf-None-Match
.Om en begäran anger både huvudena
If-Match
ochIf-Unmodified-Since
utvärderas begäran baserat på de kriterier som anges iIf-Match
.Med undantag för de två kombinationerna av villkorsstyrda rubriker som anges ovan kan en begäran endast ange en enda villkorsstyrd rubrik. Om du anger fler än ett villkorsstyrt huvud resulterar det i statuskod 400 (
Bad Request
).Om ett svar innehåller en ETag kontrollerar du versionen av begäran och svaret innan du bearbetar ETag. Till exempel returnerar version 2011-08-18 och senare en citerad ETag, men äldre versioner gör det inte. Kontrollera att programmet kan bearbeta båda ETag-formaten innan de utvärderas.
RFC 2616 tillåter flera ETag-värden i ett enda huvud, men begäranden till Blob-tjänsten kan bara innehålla ett ETag-värde. Om du anger fler än ett ETag-värde resulterar det i statuskod 400 (
Bad Request
).
Åtgärder som stöder villkorsstyrda rubriker
De åtgärder som stöder villkorliga rubriker beskrivs i följande tabell.
REST-åtgärd | Åtgärdstyp | Villkorsstyrda rubriker som stöds |
---|---|---|
Lägg till block (version 2015-02-21 och senare) |
Skriva |
If-Modified-Since If-Unmodified-Since If-Match If-None-Match x-ms-if-tags |
Lägg till blockera från URL (version 2018-11-09 och senare) |
Skriva |
If-Modified-Since If-Unmodified-Since If-Match If-None-Match x-ms-if-tags |
Kopiera blob | Läsa och skriva | För villkor på målbloben: - If-Modified-Since - If-Unmodified-Since - If-Match - If-None-Match - x-ms-if-tags För villkor på källbloben: - 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 |
Ta bort blob | Skriva |
If-Modified-Since If-Unmodified-Since If-Match If-None-Match x-ms-if-tags |
Ta bort container | Skriva |
If-Modified-Since If-Unmodified-Since |
Hämta blob | Läsa |
If-Modified-Since If-Unmodified-Since If-Match If-None-Match x-ms-if-tags |
Hämta blobmetadata | Läsa |
If-Modified-Since If-Unmodified-Since If-Match If-None-Match x-ms-if-tags |
Hämta blobegenskaper | Läsa |
If-Modified-Since If-Unmodified-Since If-Match If-None-Match x-ms-if-tags |
Hämta blobtaggar (version 2019-12-12 och senare) |
Läsa | x-ms-if-tags |
Hämta blockeringslista | Läsa | x-ms-if-tags |
Hämta sidintervall | Läsa |
If-Modified-Since If-Unmodified-Since If-Match If-None-Match x-ms-if-tags |
Låna blob | Skriva |
If-Modified-Since If-Unmodified-Since If-Match If-None-Match x-ms-if-tags |
Lånecontainer | Skriva |
If-Modified-Since If-Unmodified-Since |
Placera blob från URL | Skriva |
If-Modified-Since If-Unmodified-Since If-Match If-None-Match För villkor på källbloben: - x-ms-source-If-Modified-Since - x-ms-source-if-Unmodified-Since - x-ms-source-If-Match - x-ms-source-If-None-Match |
Placera blob | Skriva |
If-Modified-Since If-Unmodified-Since If-Match If-None-Match x-ms-if-tags |
Placera blockera från URL (version 2018-03-28 och senare) |
Skriva |
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 | Skriva |
If-Modified-Since If-Unmodified-Since If-Match If-None-Match x-ms-if-tags |
Placera sida | Skriva |
If-Modified-Since If-Unmodified-Since If-Match If-None-Match x-ms-if-tags |
Placera sida från URL (version 2018-11-09 och senare) |
Skriva |
If-Modified-Since If-Unmodified-Since If-Match If-None-Match x-ms-if-tags |
Ange blobmetadata | Skriva |
If-Modified-Since If-Unmodified-Since If-Match If-None-Match x-ms-if-tags |
Ange blobegenskaper | Skriva |
If-Modified-Since If-Unmodified-Since If-Match If-None-Match x-ms-if-tags |
Ange container-ACL | Skriva |
If-Modified-Since If-Unmodified-Since |
Ange containermetadata | Skriva | If-Modified-Since |
Ange blobtaggar (version 2019-12-12 och senare) |
Skriva | x-ms-if-tags |
Ange blobnivå | Skriva | x-ms-if-tags |
Ta ögonblicksbild av blob | Läsa |
If-Modified-Since If-Unmodified-Since If-Match If-None-Match x-ms-if-tags |
Ange princip för oföränderlighet för blob | Skriva | If-Unmodified-Since |
Följande blobtjänstdataåtgärder stöder för närvarande inte villkorsstyrda rubriker:
HTTP-svarskoder för åtgärder som stöder villkorsstyrda rubriker
Om begäran innehåller ett villkorligt huvud och det angivna villkoret inte uppfylls av resursen som begärs, returnerar Blob-tjänsten en HTTP-svarskod. Svarskoderna som returneras är i enlighet med HTTP/1.1-protokollspecifikationen (RFC 2616).
Metoder i Azure .NET-klientbiblioteket konverterar dessa felsvarskoder till ett StorageException-objekt.
Läsåtgärder
Följande tabell anger de svarskoder som returneras för ett ouppfyllt villkor för varje villkorsstyrd rubrik när åtgärden är en läsåtgärd. Läsåtgärder använder verben GET eller HEAD.
Villkorsstyrd rubrik | Svarskod om villkoret inte har uppfyllts |
---|---|
If-Modified-Since |
Inte ändrad (304 (inte ändrad)) |
If-Unmodified-Since |
Villkoret misslyckades (412 (villkoret misslyckades)) |
If-Match |
Villkoret misslyckades (412 (villkoret misslyckades)) |
If-None-Match |
Inte ändrad (304 (inte ändrad)) |
Se exemplen ovan för resultat när du använder flera rubriker med versioner 2013-08-15 eller senare.
Skrivåtgärder
Följande tabell anger de svarskoder som returneras för ett ouppfyllt villkor för varje villkorsstyrd rubrik när åtgärden är en skrivåtgärd. Skrivåtgärder använder verben PUT eller DELETE.
Villkorsstyrd rubrik | Svarskod om villkoret inte har uppfyllts |
---|---|
If-Modified-Since |
Villkoret misslyckades (412 (villkoret misslyckades)) |
If-Unmodified-Since |
Villkoret misslyckades (412 (villkoret misslyckades)) |
If-Match |
Villkoret misslyckades (412 (villkoret misslyckades)) |
If-None-Match |
Villkoret misslyckades (412 (villkoret misslyckades)) |
Kopieringsåtgärder
Följande tabell anger de svarskoder som returneras för ett ouppfyllt villkor för varje villkorsstyrd rubrik när åtgärden är en kopieringsåtgärd. Åtgärden Kopiera blob använder verben PUT.
Villkorsstyrd rubrik | Svarskod om villkoret inte har uppfyllts |
---|---|
If-Modified-Since |
Villkoret misslyckades (412 (villkoret misslyckades)) |
If-Unmodified-Since |
Villkoret misslyckades (412 (villkoret misslyckades)) |
If-Match |
Villkoret misslyckades (412 (villkoret misslyckades)) |
If-None-Match |
Villkoret misslyckades (412 (villkoret misslyckades)) |
x-ms-source-if-modified-since |
Förutsättningen misslyckades (412 (förhandsvillkoret misslyckades)) |
x-ms-source-if-unmodified-since |
Förutsättningen misslyckades (412 (förhandsvillkoret misslyckades)) |
x-ms-source-if-match |
Förutsättningen misslyckades (412 (förhandsvillkoret misslyckades)) |
x-ms-source-if-none-match |
Förutsättningen misslyckades (412 (förhandsvillkoret misslyckades)) |
Villkorsstyrda åtgärder för taggar
Förutom de standardmässiga VILLKORSSTYRDA HTTP-huvuden som stöds av Blob-tjänsten stöder flera åtgärder även villkor mot taggarna på en blobresurs.
Villkorsstyrd rubrik | Description |
---|---|
x-ms-if-tags |
Version 2019-12-12 och senare. Ett TagsPredicate värde. Ange den här rubriken för att utföra åtgärden endast om predikatet utvärderas till true mot blobens taggar. |
x-ms-source-if-tags |
Version 2019-12-12 och senare. Gäller endast kopiera blob. Ett TagsPredicate värde. Ange det här huvudet för att utföra åtgärden endast om predikatet utvärderas till true mot källblobens taggar. |
Om villkorsrubriken x-ms-if-tags
eller x-ms-source-if-tags
finns i en begäran och TagsPredicate
utvärderas till false
returnerar Blob-tjänsten felkoden 412 (förhandsvillkoret misslyckades) för åtgärden.
Anroparen måste ha behörighet att läsa taggarna på en blob för att kunna använda x-ms-if-tags
eller x-ms-source-if-tags
villkorliga rubriker.
Predikatsyntax för taggar
Blob-tjänsten har stöd för en delmängd av ANSI SQL WHERE-satsens grammatik för -huvudets TagsPredicate
värde. Följande operatorer stöds:
Operator | Beskrivning | Exempel |
---|---|---|
= |
Lika med | Status = 'In Progress' |
<> |
Inte lika med | Status <> 'Done' |
> |
Större än | LastModified > '2018-06-18 20:51:26Z' |
>= |
Större än eller lika med | Priority >= '05' |
< |
Mindre än | Age < '032' |
<= |
Mindre än eller lika med | Reviewer <= 'Smith' |
AND |
Logiska och | Name > 'C' AND Name < 'D' Age > '032' AND Age < '100' |
OR |
Logiskt eller | Status = 'Done' or LastModified > '2018-06-18 20:51:26Z' |
Alla taggvärden är strängar, och de binära relationsoperatorer som stöds använder en lexikal sortering av taggvärdena. För att stöda datatyper som inte är strängar, inklusive tal och datum, måste lämplig utfyllnad och sorterbar formatering användas. Taggvärden måste omges av enkla citattecken.
Om taggnamn är vanliga SQL-identifierare kan de finnas utan undantag. Om de innehåller specialtecken måste de avgränsas med dubbla citattecken (t.ex. "TagName" = 'TagValue').
Uttryck kan innehålla jämförelser för flera taggnamn och värden. Parenteser ((
och )
) kan användas för att gruppera logiska uttryck och styra kanonisk åtgärdsordning. En TagsPredicate
kan innehålla högst tio (10) logiska åtgärder.
Lagringstjänsten avvisar alla begäranden som innehåller ett ogiltigt uttryck med felkoden 400 (felaktig begäran).