(0) exportieren Drucken
Alle erweitern

Angeben von bedingten Headern für Vorgänge des Blob-Diensts

Letzte Aktualisierung: Februar 2014

Einige Vorgänge des Blob-Diensts unterstützen die Verwendung von bedingten Headern. Sie können mit bedingten Headern festlegen, dass ein Vorgang nur ausgeführt wird, wenn eine angegebene Bedingung erfüllt wurde.

Für den Blob-Dienst gilt die HTTP/1.1-Protokollspezifikation für bedingte Header.

Die unterstützten bedingten Header werden in der folgenden Tabelle beschrieben.

 

Bedingter Header Beschreibung

If-Modified-Since

Ein DateTime-Wert. Mit diesem Header legen Sie fest, dass der Vorgang nur ausgeführt wird, wenn die Ressource seit der angegebenen Zeit geändert wurde.

If-Unmodified-Since

Ein DateTime-Wert. Mit diesem Header legen Sie fest, dass der Vorgang nur ausgeführt wird, wenn die Ressource seit dem angegebenen Datum/der angegebenen Uhrzeit nicht geändert wurde.

If-Match

Ein ETag-Wert. Mit diesem Header legen Sie fest, dass der Vorgang nur ausgeführt wird, wenn das ETag der Ressource mit dem angegebenen Wert übereinstimmt. In Version 2011-08-18 und höher kann das ETag in Anführungszeichen angegeben werden.

If-None-Match

Ein ETag-Wert oder das Platzhalterzeichen (*). Mit diesem Header legen Sie fest, dass der Vorgang nur ausgeführt wird, wenn das ETag der Ressource nicht mit dem angegebenen Wert übereinstimmt. In Version 2011-08-18 und höher kann das ETag in Anführungszeichen angegeben werden.

Mit dem Platzhalterzeichen (*) legen Sie fest, dass der Vorgang nur ausgeführt wird, wenn die Ressource nicht vorhanden ist, und fehlschlägt, wenn die Ressource vorhanden ist.

Ab Version 2013-08-15 unterstützen der Get Blob (REST-API)-Vorgang und der Get Blob Properties (REST-API)-Vorgang mehrere bedingte Header. Sie können eine beliebige Kombination unterstützter bedingter Header angeben. Der Blob-Dienst wertet diese Bedingungen gemäß dem folgenden Ausdruck aus:

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

Sie können mehrere durch Trennzeichen getrennte Werte für If-Match und If-None-Match angeben. Wenn Sie mehrere Werte für If-Match angeben, führt der Blob-Dienst vor der Auswertung des gesamten Ausdrucks einen logischen OR-Vorgang für alle bereitgestellten Werte aus. Wenn Sie mehrere Werte für if-None-Match angeben, führt der Dienst vor der Auswertung des gesamten Ausdrucks einen logischen AND-Vorgang aus. Das Festlegen mehrerer Werte für If-Modified-Since und If-Unmodified-Since wird nicht unterstützt und führt zur Ausgabe von Fehlercode 400 (Bad Request).

Diese Funktion ist aktiviert, um die HTTP/1.1-Spezifikation zu erfüllen und Szenarien gerecht zu werden, in denen einer Inflight-Anforderung von einem Netzwerk für die Inhaltsübermittlung (CDN) oder einem Proxyserver zusätzliche bedingte Header hinzugefügt werden. Im Folgenden finden Sie einige Beispiele dafür, wie bedingte Header kombiniert werden können.

Beispiel 1:

Es wird eine Get Blob (REST-API)-Anforderung verwendet, die den If-Match-Header und den If-Modified-Since-Header umfasst. Der folgenden Tabelle können Sie den Statuscode entnehmen, der abhängig davon zurückgegeben wird, ob die Header einzeln oder in Kombination ausgewertet werden.

 

Bedingte Header Ergebnis der Einzelauswertung Ergebnis der kombinierten Auswertung

If-Match

412 (Vorbedingung nicht erfüllt)

412 (Vorbedingung nicht erfüllt)

If-Modified-Since

200 (OK)

If-Match

412 (Vorbedingung nicht erfüllt)

412 (Vorbedingung nicht erfüllt)

If-Modified-Since

304 (Nicht geändert)

If-Match

200 (OK)

200 (OK)

If-Modified-Since

200 (OK)

If-Match

200 (OK)

304 (Nicht geändert)

If-Modified-Since

304 (Nicht geändert)

Beispiel 2:

Es wird eine Anforderung verwendet, die den If-None-Match-Header und den If-Modified-Since-Header enthält.

 

Bedingte Header Ergebnis der Einzelauswertung Ergebnis der kombinierten Auswertung

If-None-Match

304 (Nicht geändert)

200 (OK)

If-Modified-Since

200 (OK)

If-None-Match

200 (OK)

200 (OK)

If-Modified-Since

200 (OK)

If-None-Match

200 (OK)

200 (OK)

If-Modified-Since

304 (Nicht geändert)

If-None-Match

304 (Nicht geändert)

304 (Nicht geändert)

If-Modified-Since

304 (Nicht geändert)

Beispiel 3:

Es wird eine Anforderung verwendet, die den If-Modified-Since, If-Match-Header und den If-Unmodified-Since-Header umfasst.

 

Bedingte Header Ergebnis der Einzelauswertung Ergebnis der kombinierten Auswertung

If-Modified-Since

200 (OK)

412 (Vorbedingung nicht erfüllt)

If-Match

412 (Vorbedingung nicht erfüllt)

If-Unmodified-Since

200 (OK)

If-Modified-Since

200 (OK)

412 (Vorbedingung nicht erfüllt)

If-Match

200 (OK)

If-Unmodified-Since

412 (Vorbedingung nicht erfüllt)

If-Modified-Since

304 (Nicht geändert)

412 (Vorbedingung nicht erfüllt)

If-Match

200 (OK)

If-Unmodified-Since

412 (Vorbedingung nicht erfüllt)

If-Modified-Since

304 (Nicht geändert)

304 (Nicht geändert)

If-Match

200 (OK)

If-Unmodified-Since

200 (OK)

Beispiel 4:

Es wird eine Anforderung verwendet, die die Header If-Modified-Since, If-None-Match, If-Unmodified-Since und If-Match umfasst.

 

Kombination Einzelner HTTP-Statuscode Abgerufener BLOB-Status

If-Modified-Since

200 (OK)

200 (OK)

If-None-Match

200 (OK)

If-Unmodified-Since

200 (OK)

If-Match

200 (OK)

If-Modified-Since

200 (OK)

412 (Vorbedingung nicht erfüllt)

If-None-Match

304 (Nicht geändert)

If-Unmodified-Since

412 (Vorbedingung nicht erfüllt)

If-Match

200 (OK)

If-Modified-Since

200 (OK)

200 (OK)

If-None-Match

304 (Nicht geändert)

If-Unmodified-Since

200 (OK)

If-Match

200 (OK)

If-Modified-Since

304 (Nicht geändert)

412 (Vorbedingung nicht erfüllt)

If-None-Match

200 (OK)

If-Unmodified-Since

200 (OK)

If-Match

412 (Vorbedingung nicht erfüllt)

If-Modified-Since

304 (Nicht geändert)

412 (Vorbedingung nicht erfüllt)

If-None-Match

200 (OK)

If-Unmodified-Since

412 (Vorbedingung nicht erfüllt)

If-Match

412 (Vorbedingung nicht erfüllt)

If-Modified-Since

304 (Nicht geändert)

200 (OK)

If-None-Match

200 (OK)

If-Unmodified-Since

200 (OK)

If-Match

200 (OK)

If-Modified-Since

304 (Nicht geändert)

412 (Vorbedingung nicht erfüllt)

If-None-Match

304 (Nicht geändert)

If-Unmodified-Since

412 (Vorbedingung nicht erfüllt)

If-Match

200 (OK)

Beachten Sie Folgendes, wenn Sie Blob-Dienst-Lesevorgänge (Get Blob (REST-API) und Get Blob Properties (REST-API)) mit Versionen vor 2013-08-15 sowie einen beliebigen Schreibvorgang unabhängig von der Version aufrufen:

  • Wenn in einer Anforderung sowohl der If-None-Match-Header als auch der If-Modified-Since-Header angegeben sind, wird die Anforderung auf Grundlage der in If-None-Match angegebenen Kriterien ausgewertet.

  • Wenn in einer Anforderung sowohl der If-Match-Header als auch der If-Unmodified-Since-Header angegeben sind, wird die Anforderung auf Grundlage der in If-Match angegebenen Kriterien ausgewertet.

  • Mit Ausnahme der beiden oben angegebenen Kombinationen bedingter Header darf in einer Anforderung nur ein einzelner bedingter Header angegeben werden. Wenn mehrere bedingte Header angegeben werden, wird der Statuscode 400 (Bad Request) zurückgegeben.

  • Wenn eine Antwort ein ETag enthält, überprüfen Sie vor dem Verarbeiten des ETags die Version der Anforderung und Antwort. Beispielsweise wird in Version 2011-08-18 und höher ein ETag in Anführungszeichen zurückgegeben, in älteren Versionen jedoch nicht. Stellen Sie vor dem Auswerten des ETags sicher, dass die Anwendung beide ETag-Formate verarbeiten kann.

  • Gemäß RFC 2616 sind mehrere ETag-Werte in einem einzelnen Header zulässig, Anforderungen an den Blob-Dienst dürfen jedoch nur einen ETag-Wert enthalten. Wenn mehrere ETag-Werte angegeben werden, wird der Statuscode 400 (Bad Request) erzeugt.

In der folgenden Tabelle sind die Vorgänge beschrieben, die bedingte Header unterstützen.

 

REST-Vorgang

Vorgangstyp

Unterstützte bedingte Header

Copy BLOB (REST-API)

Lesen und Schreiben

Für Bedingungen für den Ziel-BLOB:

  • If-Modified-Since 

  • If-Unmodified-Since 

  • If-Match 

  • If-None-Match 

Für Bedingungen für den Quell-BLOB:

  • x-ms-source-if-modified-since 

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

  • x-ms-source-if-match 

  • x-ms-source-if-none-match 

Löschen eines BLOB (REST-API)

Schreiben

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Löschen eines Containers (REST-API)

Schreiben

If-Modified-Since

If-Unmodified-Since

Get Blob (REST-API)

Lesen

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Get Blob Metadata (REST-API)

Lesen

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Get Blob Properties (REST-API)

Lesen

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Abrufen von Seitenbereichen (REST-API)

Schreiben

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Leasen eines BLOB (REST-API)

Schreiben

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Lease Container (REST-API)

Schreiben

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Put Blob (REST-API)

Schreiben

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Put Block List (REST-API)

Schreiben

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Put Page (REST-API)

Schreiben

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Festlegen von BLOB-Metadaten (REST-API)

Schreiben

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Festlegen von BLOB-Eigenschaften (REST-API)

Schreiben

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Set Container ACL (REST-API)

Schreiben

If-Modified-Since

If-Unmodified-Since

Set Container Metadata (REST-API)

Schreiben

If-Modified-Since

Momentaufnahme-BLOB (REST-API)

Lesen

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Bedingte Header werden in den folgenden Datenvorgängen des Blob-Diensts derzeit nicht unterstützt:

Wenn die Anforderung einen bedingten Header enthält und die angeforderte Ressource die angegebene Bedingung nicht erfüllt, gibt der Blob-Dienst einen HTTP-Antwortcode zurück. Die zurückgegebenen Antwortcodes entsprechen der HTTP/1.1-Protokollspezifikation (RFC 2616). Methoden in den Windows Azure .NET-Bibliotheken konvertieren diese Fehlerantwortcodes in eine StorageClientException und füllen die StatusCode-Eigenschaft mit einem Wert aus der System.Net.HttpStatusCode-Enumeration auf. Beispielcode zum Behandeln einer Ausnahme, die durch einen bedingten Vorgang verursacht wurde, finden Sie unter Bedingtes Aktualisieren einer lokalen BLOB-Kopie.

In der folgenden Tabelle sind die Antwortcodes angegeben, die bei einem Lesevorgang für die einzelnen bedingten Header zurückgegeben werden, wenn eine Bedingung nicht erfüllt ist. In Lesevorgängen werden die Verben GET und HEAD verwendet.

 

Bedingter Header Antwortcode, wenn Bedingung nicht erfüllt wurde

If-Modified-Since

Nicht geändert (304 (nicht geändert))

If-Unmodified-Since

Vorbedingung nicht erfüllt (412) (Vorbedingung nicht erfüllt))

If-Match

Vorbedingung nicht erfüllt (412) (Vorbedingung nicht erfüllt))

If-None-Match

Nicht geändert (304 (nicht geändert))

Die Ergebnisse, die bei Verwendung mehrerer Header mit Version 2013-08-15 oder höher zurückgegebenen werden, können Sie den Beispielen oben entnehmen.

In der folgenden Tabelle sind die Antwortcodes angegeben, die bei einem Schreibvorgang für die einzelnen bedingten Header zurückgegeben werden, wenn eine Bedingung nicht erfüllt ist. In Schreibvorgängen werden die Verben PUT und DELETE verwendet.

 

Bedingter Header Antwortcode, wenn Bedingung nicht erfüllt wurde

If-Modified-Since

Vorbedingung nicht erfüllt (412) (Vorbedingung nicht erfüllt))

If-Unmodified-Since

Vorbedingung nicht erfüllt (412) (Vorbedingung nicht erfüllt))

If-Match

Vorbedingung nicht erfüllt (412) (Vorbedingung nicht erfüllt))

If-None-Match

Vorbedingung nicht erfüllt (412) (Vorbedingung nicht erfüllt))

In der folgenden Tabelle sind die Antwortcodes angegeben, die bei einem Kopiervorgang für die einzelnen bedingten Header zurückgegeben werden, wenn eine Bedingung nicht erfüllt ist. Der Copy BLOB (REST-API)-Vorgang verwendet das Verb PUT.

 

Bedingter Header Antwortcode, wenn Bedingung nicht erfüllt wurde

If-Modified-Since

Vorbedingung nicht erfüllt (412) (Vorbedingung nicht erfüllt))

If-Unmodified-Since

Vorbedingung nicht erfüllt (412) (Vorbedingung nicht erfüllt))

If-Match

Vorbedingung nicht erfüllt (412) (Vorbedingung nicht erfüllt))

If-None-Match

Vorbedingung nicht erfüllt (412) (Vorbedingung nicht erfüllt))

x-ms-source-if-modified-since

Vorbedingung nicht erfüllt (412) (Vorbedingung nicht erfüllt))

x-ms-source-if-unmodified-since

Vorbedingung nicht erfüllt (412) (Vorbedingung nicht erfüllt))

x-ms-source-if-match

Vorbedingung nicht erfüllt (412) (Vorbedingung nicht erfüllt))

x-ms-source-if-none-match

Vorbedingung nicht erfüllt (412) (Vorbedingung nicht erfüllt))

Siehe auch

Anzeigen:
© 2014 Microsoft