Voorwaardelijke headers opgeven voor blobservicebewerkingen

Verschillende blobservicebewerkingen ondersteunen het gebruik van voorwaardelijke headers. U kunt alleen voorwaardelijke headers opgeven om een bewerking uit te voeren als aan een opgegeven voorwaarde is voldaan.

De Blob-service volgt de HTTP/1.1-protocolspecificatie voor voorwaardelijke headers.

Ondersteunde voorwaardelijke headers

De ondersteunde voorwaardelijke headers worden beschreven in de volgende tabel.

Voorwaardelijke koptekst Beschrijving
If-Modified-Since Een DateTime waarde. De datumnotatie volgt RFC 1123. Zie Weergave van datum-tijdwaarden in kopteksten voor meer informatie. Geef deze header op om de bewerking alleen uit te voeren als de resource sinds de opgegeven tijd is gewijzigd.
If-Unmodified-Since Een DateTime waarde. De datumnotatie volgt RFC 1123. Zie Weergave van datum-tijdwaarden in kopteksten voor meer informatie. Geef deze header op om de bewerking alleen uit te voeren als de resource niet is gewijzigd sinds de opgegeven datum/tijd.
If-Match Een ETag-waarde. Geef deze header op om de bewerking alleen uit te voeren als de ETag van de resource overeenkomt met de opgegeven waarde. Voor versies 2011-08-18 en nieuwer kan de ETag tussen aanhalingstekens worden opgegeven.
If-None-Match Een ETag-waarde of het jokerteken (*). Geef deze header op om de bewerking alleen uit te voeren als de ETag van de resource niet overeenkomt met de opgegeven waarde. Voor versies 2011-08-18 en nieuwer kan de ETag tussen aanhalingstekens worden opgegeven.

Geef het jokerteken (*) op om de bewerking alleen uit te voeren als de resource niet bestaat en mislukt de bewerking als deze wel bestaat.

Voorwaardelijke headers opgeven voor leesbewerkingen in blobservice in versie 2013-08-15 of hoger

Vanaf versie 2013-08-15 ondersteunen de bewerkingen Blob ophalen en Blobeigenschappen ophalen meerdere voorwaardelijke headers. U kunt elke combinatie van ondersteunde voorwaardelijke headers opgeven. De Blob-service evalueert deze voorwaarden volgens de volgende expressie:

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

U kunt ook meerdere door komma's gescheiden waarden opgeven voor If-Match en If-None-Match. Als u meerdere waarden opgeeft voor If-Match, voert de Blob-service een logische OR bewerking uit op alle opgegeven waarden voordat de hele expressie wordt geëvalueerd. Als u meerdere waarden opgeeft voor if-None-Match, voert de service een logische AND bewerking uit voordat de hele expressie wordt geëvalueerd. Het opgeven van meerdere waarden voor If-Modified-Since en If-Unmodified-Since wordt niet ondersteund en resulteert in foutcode 400 (Bad Request).

Deze functie is ingeschakeld om te voldoen aan de HTTP/1.1-specificatie en om in te spelen op scenario's waarin een Content Delivery Network (CDN) of proxyserver extra voorwaardelijke headers toevoegt aan een aanvraag voor inflight. Hieronder ziet u enkele voorbeelden van verschillende combinaties van voorwaardelijke headers.

Voorbeeld 1:

Overweeg een Get Blob-aanvraag met de If-Match headers en If-Modified-Since . De volgende tabel geeft het resultaat aan als de headers afzonderlijk worden geëvalueerd en het resultaat als ze in combinatie worden geëvalueerd.

Voorwaardelijke headers Resultaat indien afzonderlijk geëvalueerd Resultaat indien geëvalueerd in combinatie
If-Match 412 (voorwaarde is mislukt) 412 (voorwaarde is mislukt)
If-Modified-Since 200 (OK) 412 (voorwaarde is mislukt)
If-Match 412 (voorwaarde is mislukt) 412 (voorwaarde is mislukt)
If-Modified-Since 304 (niet gewijzigd) 412 (voorwaarde is mislukt)
If-Match 200 (OK) 200 (OK)
If-Modified-Since 200 (OK) 200 (OK)
If-Match 200 (OK) 304 (niet gewijzigd)
If-Modified-Since 304 (niet gewijzigd) 304 (niet gewijzigd)

Voorbeeld 2:

Overweeg een aanvraag met If-None-Match headers en If-Modified-Since .

Voorwaardelijke headers Resultaat indien afzonderlijk geëvalueerd Resultaat indien geëvalueerd in combinatie
If-None-Match 304 (niet gewijzigd) 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 (niet gewijzigd) 200 (OK)
If-None-Match 304 (niet gewijzigd) 304 (niet gewijzigd)
If-Modified-Since 304 (niet gewijzigd) 304 (niet gewijzigd)

Voorbeeld 3:

Overweeg een aanvraag met If-Modified-Since, If-Match en-headers If-Unmodified-Since .

Voorwaardelijke headers Resultaat indien afzonderlijk geëvalueerd Resultaat indien geëvalueerd in combinatie
If-Modified-Since 200 (OK) 412 (voorwaarde is mislukt)
If-Match 412 (voorwaarde is mislukt) 412 (voorwaarde is mislukt)
If-Unmodified-Since 200 (OK) 412 (voorwaarde is mislukt)
If-Modified-Since 200 (OK) 412 (voorwaarde is mislukt)
If-Match 200 (OK) 412 (voorwaarde is mislukt)
If-Unmodified-Since 412 (voorwaarde is mislukt) 412 (voorwaarde is mislukt)
If-Modified-Since 304 (niet gewijzigd) 412 (voorwaarde is mislukt)
If-Match 200 (OK) 412 (voorwaarde is mislukt)
If-Unmodified-Since 412 (voorwaarde is mislukt) 412 (voorwaarde is mislukt)
If-Modified-Since 304 (niet gewijzigd) 304 (niet gewijzigd)
If-Match 200 (OK) 304 (niet gewijzigd)
If-Unmodified-Since 200 (OK) 304 (niet gewijzigd)

Voorbeeld 4:

Overweeg een aanvraag met If-Modified-Sinceheaders , If-None-MatchIf-Unmodified-Since enIf-Match.

Combinatie Afzonderlijke HTTP-statuscode Blobstatusresultaat ophalen
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 (voorwaarde is mislukt)
If-None-Match 304 (niet gewijzigd) 412 (voorwaarde is mislukt)
If-Unmodified-Since 412 (voorwaarde is mislukt) 412 (voorwaarde is mislukt)
If-Match 200 (OK) 412 (voorwaarde is mislukt)
If-Modified-Since 200 (OK) 200 (OK)
If-None-Match 304 (niet gewijzigd) 200 (OK)
If-Unmodified-Since 200 (OK) 200 (OK)
If-Match 200 (OK) 200 (OK)
If-Modified-Since 304 (niet gewijzigd) 412 (voorwaarde is mislukt)
If-None-Match 200 (OK) 412 (voorwaarde is mislukt)
If-Unmodified-Since 200 (OK) 412 (voorwaarde is mislukt)
If-Match 412 (voorwaarde is mislukt) 412 (voorwaarde is mislukt)
If-Modified-Since 304 (niet gewijzigd) 412 (voorwaarde is mislukt)
If-None-Match 200 (OK) 412 (voorwaarde is mislukt)
If-Unmodified-Since 412 (voorwaarde is mislukt) 412 (voorwaarde is mislukt)
If-Match 412 (voorwaarde is mislukt) 412 (voorwaarde is mislukt)
If-Modified-Since 304 (niet gewijzigd) 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 (niet gewijzigd) 412 (voorwaarde is mislukt)
If-None-Match 304 (niet gewijzigd) 412 (voorwaarde is mislukt)
If-Unmodified-Since 412 (voorwaarde is mislukt) 412 (voorwaarde is mislukt)
If-Match 200 (OK) 412 (voorwaarde is mislukt)

Voorwaardelijke headers opgeven voor leesbewerkingen in versies vóór 15-08-2013 en voor schrijfbewerkingen (alle versies)

Wanneer u leesbewerkingen voor de Blob-service aanroept (Blob ophalen en Eigenschappen van blob ophalen) met versies ouder dan 2013-08-15 en bij het aanroepen van een schrijfbewerking, ongeacht de versie, moet u rekening houden met het volgende:

  • Als een aanvraag zowel de If-None-Match headers en If-Modified-Since opgeeft, wordt de aanvraag geëvalueerd op basis van de criteria die zijn opgegeven in If-None-Match.

  • Als een aanvraag zowel de If-Match headers en If-Unmodified-Since opgeeft, wordt de aanvraag geëvalueerd op basis van de criteria die zijn opgegeven in If-Match.

  • Met uitzondering van de twee combinaties van voorwaardelijke headers die hierboven worden vermeld, kan een aanvraag slechts één voorwaardelijke header opgeven. Als u meer dan één voorwaardelijke header opgeeft, resulteert dit in statuscode 400 (Bad Request).

  • Als een antwoord een ETag bevat, controleert u de versie van de aanvraag en het antwoord voordat u de ETag verwerkt. Versie 2011-08-18 en hoger retourneren bijvoorbeeld een ETag met aanhalingstekens, maar oudere versies niet. Zorg ervoor dat uw toepassing beide ETag-indelingen kan verwerken voordat ze worden geëvalueerd.

  • RFC 2616 staat meerdere ETag-waarden toe in één header, maar aanvragen naar de Blob-service kunnen slechts één ETag-waarde bevatten. Als u meer dan één ETag-waarde opgeeft, resulteert dit in statuscode 400 (Bad Request).

Bewerkingen die voorwaardelijke headers ondersteunen

De bewerkingen die voorwaardelijke headers ondersteunen, worden beschreven in de volgende tabel.

REST-bewerking Het type bewerking Ondersteunde voorwaardelijke headers
Toevoegblok

(versie 21-02-2015 en hoger)
Schrijven If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

x-ms-if-tags
Blok toevoegen vanuit URL

(versie 2018-11-09 en hoger)
Schrijven If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

x-ms-if-tags
Blob kopiëren Lezen en schrijven Voor voorwaarden op de doel-blob:

- If-Modified-Since

- If-Unmodified-Since

- If-Match

- If-None-Match

- x-ms-if-tags

Voor voorwaarden op de bron-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
Blob verwijderen Schrijven If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

x-ms-if-tags
Container verwijderen Schrijven If-Modified-Since

If-Unmodified-Since
Blob ophalen Lezen If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

x-ms-if-tags
Blob-metagegevens ophalen Lezen If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

x-ms-if-tags
Blob-eigenschappen ophalen Lezen If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

x-ms-if-tags
Blobtags ophalen

(versie 2019-12-12 en hoger)
Lezen x-ms-if-tags
Lijst met blokkeringen ophalen Lezen x-ms-if-tags
Paginabereiken ophalen Lezen If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

x-ms-if-tags
Lease-blob Schrijven If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

x-ms-if-tags
Leasecontainer Schrijven If-Modified-Since

If-Unmodified-Since
Blob van URL plaatsen Schrijven If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Voor voorwaarden op de bron-blob:

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

- x-ms-source-if-unmodified-since

- x-ms-source-If-Match

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

Blob plaatsen Schrijven If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

x-ms-if-tags
Blok van URL plaatsen

(versie 28-03-2018 en hoger)
Schrijven x-ms-source-If-Modified-Since

x-ms-source-If-Unmodified-Since

x-ms-source-If-Match

x-ms-source-If-None-Match
Lijst met blokkeringen plaatsen Schrijven If-Modified-Since

If-Unmodified-Since

Als-overeenkomst

If-None-Match

x-ms-if-tags
Pagina plaatsen Schrijven If-Modified-Since

If-Unmodified-Since

Als-overeenkomst

If-None-Match

x-ms-if-tags
Pagina van URL plaatsen

(versie 2018-11-09 en hoger)
Schrijven If-Modified-Since

If-Unmodified-Since

Als-overeenkomst

If-None-Match

x-ms-if-tags
Blobmetagegevens instellen Schrijven If-Modified-Since

If-Unmodified-Since

Als-overeenkomst

If-None-Match

x-ms-if-tags
Blobeigenschappen instellen Schrijven If-Modified-Since

If-Unmodified-Since

Als-overeenkomst

If-None-Match

x-ms-if-tags
Container-ACL instellen Schrijven If-Modified-Since

If-Unmodified-Since
Containermetagegevens instellen Schrijven If-Modified-Since
Blobtags instellen

(versie 2019-12-12 en hoger)
Schrijven x-ms-if-tags
Blob-laag instellen Lezen of schrijven x-ms-if-tags
Momentopname maken van blob Lezen If-Modified-Since

If-Unmodified-Since

Als-overeenkomst

If-None-Match

x-ms-if-tags
Beleid voor onveranderbaarheid van blob instellen Schrijven If-Unmodified-Since

De volgende blobservicegegevensbewerkingen bieden momenteel geen ondersteuning voor voorwaardelijke headers:

HTTP-antwoordcodes voor bewerkingen die voorwaardelijke headers ondersteunen

Als de aanvraag een voorwaardelijke header bevat en niet aan de opgegeven voorwaarde wordt voldaan door de resource die wordt aangevraagd, retourneert de Blob-service een HTTP-antwoordcode. De geretourneerde antwoordcodes zijn in overeenstemming met de HTTP/1.1-protocolspecificatie (RFC 2616).

Methoden in de Azure .NET-clientbibliotheek converteren deze foutcodes naar een StorageException-object.

Leesbewerkingen

In de volgende tabel ziet u de antwoordcodes die worden geretourneerd voor een niet-voldaan voorwaarde voor elke voorwaardelijke header wanneer de bewerking een leesbewerking is. Leesbewerkingen gebruiken de werkwoorden GET of HEAD.

Voorwaardelijke header Antwoordcode als niet aan de voorwaarde is voldaan
If-Modified-Since Niet gewijzigd (304 (niet gewijzigd))
If-Unmodified-Since Voorwaarde is mislukt (412 (voorwaarde mislukt))
If-Match Voorwaarde is mislukt (412 (voorwaarde mislukt))
If-None-Match Niet gewijzigd (304 (niet gewijzigd))

Raadpleeg de bovenstaande voorbeelden voor resultaten bij het gebruik van meerdere headers met versies 2013-08-15 of hoger.

Schrijfbewerkingen

De volgende tabel geeft de antwoordcodes weer die worden geretourneerd voor een niet-voldaan voorwaarde voor elke voorwaardelijke header wanneer de bewerking een schrijfbewerking is. Schrijfbewerkingen maken gebruik van de werkwoorden PUT of DELETE.

Voorwaardelijke header Antwoordcode als niet aan de voorwaarde is voldaan
If-Modified-Since Voorwaarde is mislukt (412 (voorwaarde mislukt))
If-Unmodified-Since Voorwaarde is mislukt (412 (voorwaarde mislukt))
If-Match Voorwaarde is mislukt (412 (voorwaarde mislukt))
If-None-Match Voorwaarde is mislukt (412 (voorwaarde mislukt))

Kopieerbewerkingen

De volgende tabel geeft de antwoordcodes weer die worden geretourneerd voor een niet-voldaan voorwaarde voor elke voorwaardelijke header wanneer de bewerking een kopieerbewerking is. De bewerking Blob kopiëren maakt gebruik van de werkwoorden PUT.

Voorwaardelijke header Antwoordcode als niet aan de voorwaarde is voldaan
If-Modified-Since Voorwaarde is mislukt (412 (voorwaarde mislukt))
If-Unmodified-Since Voorwaarde is mislukt (412 (voorwaarde mislukt))
If-Match Voorwaarde is mislukt (412 (voorwaarde mislukt))
If-None-Match Voorwaarde is mislukt (412 (voorwaarde mislukt))
x-ms-source-if-modified-since Voorwaarde is mislukt (412 (voorwaarde mislukt))
x-ms-source-if-unmodified-since Voorwaarde is mislukt (412 (voorwaarde mislukt))
x-ms-source-if-match Voorwaarde is mislukt (412 (voorwaarde mislukt))
x-ms-source-if-none-match Voorwaarde is mislukt (412 (voorwaarde mislukt))

Voorwaardelijke bewerkingen van tags

Naast de standaard voorwaardelijke HTTP-headers die worden ondersteund door de Blob-service, ondersteunen verschillende bewerkingen ook voorwaarden voor de tags op een blob-resource.

Voorwaardelijke header Beschrijving
x-ms-if-tags Versie 2019-12-12 en hoger. Een TagsPredicate waarde. Geef deze header op om de bewerking alleen uit te voeren als het predicaat wordt geëvalueerd op true basis van de tags van de blob.
x-ms-source-if-tags Versie 2019-12-12 en hoger. Is alleen van toepassing op blob kopiëren. Een TagsPredicate waarde. Geef deze header op om de bewerking alleen uit te voeren als het predicaat wordt geëvalueerd op true basis van de tags van de bron-blob.

Als de x-ms-if-tags voorwaardelijke header of x-ms-source-if-tags aanwezig is in een aanvraag en de TagsPredicate resulteert falsein , retourneert de Blob-service foutcode 412 (Voorwaarde is mislukt) voor de bewerking.

De aanroeper moet gemachtigd zijn om de tags op een blob te lezen om de x-ms-if-tags voorwaardelijke headers of x-ms-source-if-tags te gebruiken.

Syntaxis van tags predicaat

De Blob-service ondersteunt een subset van de grammatica van de ANSI SQL WHERE-component voor de waarde van de TagsPredicate header. De volgende operators worden ondersteund:

Operator Beschrijving Voorbeeld
= Is gelijk aan Status = 'In Progress'
<> Is niet gelijk aan Status <> 'Done'
> Groter dan LastModified > '2018-06-18 20:51:26Z'
>= Groter dan of gelijk aan Priority >= '05'
< Kleiner dan Age < '032'
<= Kleiner dan of gelijk aan Reviewer <= 'Smith'
AND Logische en Name > 'C' AND Name < 'D'
Age > '032' AND Age < '100'
OR Logische of Status = 'Done' or LastModified > '2018-06-18 20:51:26Z'

Alle tagwaarden zijn tekenreeksen en de ondersteunde binaire relationele operatoren gebruiken een lexicografische sortering van de tagwaarden. Ter ondersteuning van niet-tekenreeksgegevenstypen, inclusief getallen en datums, moeten de juiste opvulling en sorteerbare opmaak worden gebruikt. Tagwaarden moeten tussen enkele aanhalingstekens worden geplaatst.

Als tagnamen normale SQL-id's zijn, kunnen ze aanwezig zijn zonder escape; als ze speciale tekens bevatten, moeten ze worden gescheiden door dubbele aanhalingstekens (bijvoorbeeld 'TagName' = 'TagValue').

Expressies kunnen vergelijkingen voor meerdere tagnamen en -waarden bevatten. Haakjes (( en )) kunnen worden gebruikt om logische expressies te groepeert en de canonieke volgorde van de bewerking te bepalen. Een TagsPredicate kan maximaal tien (10) logische bewerkingen bevatten.

De opslagservice weigert elke aanvraag die een ongeldige expressie met foutcode 400 (ongeldige aanvraag) bevat.

Zie ook

Concepten van blob-service