Angeben von bedingten Headern für Blob-Dienstvorgänge
Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

Angeben von bedingten Headern für Blob-Dienstvorgänge

 

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.

Der 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 der Get Blob und Get Blob Properties Vorgänge unterstützen 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 auch angeben, mehrere durch Trennzeichen getrennte Werte für If-Match und If-None-Match. Wenn Sie angeben, dass mehrere Werte für If-Match, führt der Blob-Dienst einen logischen OR Vorgang für alle bereitgestellten Werte vor der Auswertung des gesamten Ausdrucks. Wenn Sie angeben, dass mehrere Werte für if-None-Match, führt der Dienst eine logische AND Vorgang, bevor die Auswertung des gesamten Ausdrucks. Angeben mehrerer Werte für If-Modified-Since und If-Unmodified-Since wird nicht unterstützt und führt zu Fehlercode 400 (Bad Request).

Dieses Feature ist aktiviert, um die Einhaltung der HTTP/1.1-Spezifikation und Szenarien gerecht, in denen ein Content Delivery Network (CDN) oder Proxy Server zusätzliche bedingte Header auf eine Inflight-Anforderung hinzugefügt. Im Folgenden finden Sie einige Beispiele dafür, wie bedingte Header kombiniert werden können.

Beispiel 1:

Betrachten Sie eine Get Blob Anforderung verwendet, die If-Match und If-Modified-Since Header. 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, If-None-Match und If-Modified-Since Header.

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, If-Modified-Since, If-Match und If-Unmodified-Since Header.

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, If-Modified-Since, If-None-Match, If-Unmodified-Since und If-Match Header.

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)

Wenn der Blob-Dienst Lesevorgänge (Get Blob und Get Blob Properties) mit Versionen vor 2013-08-15 und beim Aufrufen von jedem Schreibvorgang unabhängig von der Version, Bedenken Sie Folgendes:

  • Wenn eine Anforderung sowohl gibt die If-None-Match und If-Modified-Since -Header der Anforderung wird basierend auf den angegebenen Kriterien ausgewertet If-None-Match.

  • Wenn eine Anforderung sowohl gibt die If-Match und If-Unmodified-Since -Header der Anforderung wird basierend auf den angegebenen Kriterien ausgewertet If-Match.

  • Mit Ausnahme der beiden oben angegebenen Kombinationen bedingter Header darf in einer Anforderung nur ein einzelner bedingter Header angegeben werden. Mehrere bedingte Header angegeben Statuscode 400 (Bad Request).

  • 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.

  • RFC 2616 können mehrere ETag-Werte in einem einzelnen Header jedoch Anforderungen an den Blob-Dienst können nur einen ETag-Wert enthalten. Mehrere ETag angegeben Wert Statuscode 400 (Bad Request).

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

REST-Vorgang

Vorgangstyp

Unterstützte bedingte Header

Copy BLOB

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 

Blob löschen

Schreiben

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Container löschen

Schreiben

If-Modified-Since

If-Unmodified-Since

Get Blob

Lesen

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Get Blob Metadata

Lesen

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Get Blob Properties

Lesen

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Abrufen von Seitenbereichen

Schreiben

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Leasen eines BLOB

Schreiben

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Lease Container

Schreiben

If-Modified-Since

If-Unmodified-Since

Put Blob

Schreiben

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Put Block List

Schreiben

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Block Anfügen

(Version 2015-02-21 und höher)

Schreiben

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Put Page

Schreiben

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Festlegen von BLOB-Metadaten

Schreiben

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Festlegen von BLOB-Eigenschaften

Schreiben

If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Set Container ACL

Schreiben

If-Modified-Since

If-Unmodified-Since

Set Container Metadata

Schreiben

If-Modified-Since

Momentaufnahme-BLOB

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 der Clientbibliothek Azure .NET konvertieren diese fehlerantwortcodes in eine StorageException.

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. Die Copy BLOB 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))

Anzeigen:
© 2016 Microsoft