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-Matchutfö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-Matchutfö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-MatchIf-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 och If-Modified-Since utvärderas begäran baserat på de kriterier som anges i If-None-Match.

  • Om en begäran anger både huvudena If-Match och If-Unmodified-Since utvärderas begäran baserat på de kriterier som anges i If-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å Läsa eller 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 blob oföränderlighetsprincip 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 villkorsstyrt 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

I följande tabell visas svarskoderna 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 (ändras inte))
If-Unmodified-Since Förutsättningen misslyckades (412 (förhandsvillkoret misslyckades))
If-Match Förutsättningen misslyckades (412 (förhandsvillkoret misslyckades))
If-None-Match Inte ändrad (304 (ändras inte))

Se exemplen ovan för resultat när du använder flera rubriker med version 2013-08-15 eller senare.

Skrivåtgärder

I följande tabell visas svarskoderna 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 Förutsättningen misslyckades (412 (förhandsvillkoret misslyckades))
If-Unmodified-Since Förutsättningen misslyckades (412 (förhandsvillkoret misslyckades))
If-Match Förutsättningen misslyckades (412 (förhandsvillkoret misslyckades))
If-None-Match Förutsättningen misslyckades (412 (förhandsvillkoret misslyckades))

Kopieringsåtgärder

I följande tabell visas svarskoderna som returneras för ett ouppfyllt villkor för varje villkorsrubrik 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 Förutsättningen misslyckades (412 (förhandsvillkoret misslyckades))
If-Unmodified-Since Förutsättningen misslyckades (412 (förhandsvillkoret misslyckades))
If-Match Förutsättningen misslyckades (412 (förhandsvillkoret misslyckades))
If-None-Match Förutsättningen misslyckades (412 (förhandsvillkoret misslyckades))
x-ms-source-if-modified-since Villkoret misslyckades (412 (villkoret misslyckades))
x-ms-source-if-unmodified-since Villkoret misslyckades (412 (villkoret misslyckades))
x-ms-source-if-match Villkoret misslyckades (412 (villkoret misslyckades))
x-ms-source-if-none-match Villkoret misslyckades (412 (villkoret misslyckades))

Taggar villkorsstyrda åtgärder

Förutom de standardvillkorshuvuden för HTTP 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 det här huvudet 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 eller x-ms-source-if-tags villkorsrubriken x-ms-if-tagsTagsPredicate finns i en begäran och utvärderas till falsereturnerar Blob-tjänsten felkoden 412 (villkorsfel) 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 villkorsstyrda rubriker.

Syntax för predikat för taggar

Blob-tjänsten stöder 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 Logiskt 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 lexikografiska 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 att komma undan. 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).

Se även

Blob Service-begrepp