Udostępnij przez


Określanie warunkowych nagłówków dla operacji usług Blob

Kilka operacji usług Blob obsługuje użycie warunkowych nagłówków. Możesz określić nagłówki warunkowe, aby wykonały operację tylko wtedy, gdy spełniony jest określony warunek.

Usługa Blob spełnia specyfikację protokołu HTTP/1.1 dla warunkowych nagłówków.

Obsługiwane nagłówki warunkowe

Obsługiwane nagłówki warunkowe opisano w poniższej tabeli.

Nagłówek warunkowy Description
If-Modified-Since Wartość DateTime. Format daty jest zgodny ze standardem RFC 1123. Więcej informacji można znaleźć w artykule Reprezentacja wartości dat-czas w nagłówkach. Określ ten nagłówek, aby wykonał operację tylko wtedy, gdy zasób został zmodyfikowany od określonego czasu.
If-Unmodified-Since Wartość DateTime. Format daty jest zgodny ze standardem RFC 1123. Więcej informacji można znaleźć w artykule Reprezentacja wartości dat-czas w nagłówkach. Określ ten nagłówek, aby wykonał operację tylko wtedy, gdy zasób nie został zmodyfikowany przed podaną datą/godziną.
If-Match Wartość ETag. Określ ten nagłówek, aby wykonać operację tylko wtedy, gdy element ETag zasobu jest zgodny z określoną wartością. Dla wersji 2011-08-18 i nowszych, ETag można podać w cudzysłowie.
If-None-Match Wartość elementu ETag lub symbol wieloznaczny (*). Określ ten nagłówek, aby wykonał operację tylko wtedy, gdy ETag zasobu nie odpowiada podanej wartości. Dla wersji 2011-08-18 i nowszych, ETag można podać w cudzysłowie.

Określ znak dziki (*), aby wykonał operację tylko wtedy, gdy zasób nie istnieje, a jeśli istnieje, operacja się nie zniesie.

Określanie warunkowych nagłówków dla operacji odczytu usług blob w wersji 2013-08-15 lub nowszej

Począwszy od wersji 2013-08-15, operacje Get Blob i Get Blob Properties obsługują wiele warunkowych nagłówków. Możesz określić dowolną kombinację obsługiwanych nagłówków warunkowych. Usługa Blob ocenia te warunki według następującego wyrażenia:

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

Możesz także podać wiele wartości oddzielonych przecinkami dla If-Match i If-None-Match. Jeśli określisz wiele wartości dla If-Match, usługa Blob wykonuje operację logiczną OR na wszystkich podanych wartościach przed wyliczeniem całego wyrażenia. Jeśli określisz wiele wartości dla if-None-Match, usługa wykonuje operację logiczną AND przed wyliczeniem całego wyrażenia. Określenie wielu wartości dla If-Modified-Since i If-Unmodified-Since nie jest obsługiwane i skutkuje kodem błędu 400 (Bad Request).

Ta funkcja jest włączona, aby spełnić wymagania HTTP/1.1. Obsługuje także sytuacje, gdy Content Delivery Network (CDN) lub serwer proxy dodaje dodatkowe nagłówki warunkowe do zapytania w trakcie lotu. Poniższe przykłady ilustrują kilka różnych kombinacji nagłówków warunkowych.

Przykład 1:

Rozważmy żądanie Get Blob zawierające If-Match nagłówki i If-Modified-Since . Poniższa tabela pokazuje wynik, jeśli nagłówki są oceniane indywidualnie, oraz wynik, jeśli są one oceniane łącznie.

Nagłówki warunkowe Wynik, jeśli ocenimy indywidualnie Wynik w przypadku oceny w kombinacji
If-Match 412 (Warunek wstępny niespełniony) 412 (Warunek wstępny niespełniony)
If-Modified-Since 200 (OK) 412 (Warunek wstępny niespełniony)
If-Match 412 (Warunek wstępny niespełniony) 412 (Warunek wstępny niespełniony)
If-Modified-Since 304 (Niezmodyfikowany) 412 (Warunek wstępny niespełniony)
If-Match 200 (OK) 200 (OK)
If-Modified-Since 200 (OK) 200 (OK)
If-Match 200 (OK) 304 (Niezmodyfikowany)
If-Modified-Since 304 (Niezmodyfikowany) 304 (Niezmodyfikowany)

Przykład 2:

Rozważmy żądanie zawierające If-None-Match i If-Modified-Since nagłówki.

Nagłówki warunkowe Wynik, jeśli ocenimy indywidualnie Wynik w przypadku oceny w kombinacji
If-None-Match 304 (Niezmodyfikowany) 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 (Niezmodyfikowany) 200 (OK)
If-None-Match 304 (Niezmodyfikowany) 304 (Niezmodyfikowany)
If-Modified-Since 304 (Niezmodyfikowany) 304 (Niezmodyfikowany)

Przykład 3:

Rozważmy żądanie zawierające If-Modified-Since, If-Match, oraz If-Unmodified-Since nagłówki.

Nagłówki warunkowe Wynik, jeśli ocenimy indywidualnie Wynik w przypadku oceny w kombinacji
If-Modified-Since 200 (OK) 412 (Warunek wstępny niespełniony)
If-Match 412 (Warunek wstępny niespełniony) 412 (Warunek wstępny niespełniony)
If-Unmodified-Since 200 (OK) 412 (Warunek wstępny niespełniony)
If-Modified-Since 200 (OK) 412 (Warunek wstępny niespełniony)
If-Match 200 (OK) 412 (Warunek wstępny niespełniony)
If-Unmodified-Since 412 (Warunek wstępny niespełniony) 412 (Warunek wstępny niespełniony)
If-Modified-Since 304 (Niezmodyfikowany) 412 (Warunek wstępny niespełniony)
If-Match 200 (OK) 412 (Warunek wstępny niespełniony)
If-Unmodified-Since 412 (Warunek wstępny niespełniony) 412 (Warunek wstępny niespełniony)
If-Modified-Since 304 (Niezmodyfikowany) 304 (Niezmodyfikowany)
If-Match 200 (OK) 304 (Niezmodyfikowany)
If-Unmodified-Since 200 (OK) 304 (Niezmodyfikowany)

Przykład 4:

Rozważmy żądanie zawierające If-Modified-Since, If-None-Match, If-Unmodified-Since, oraz If-Match nagłówki.

Kombinacja Pojedynczy kod statusu http Uzyskaj wynik statusu Blob
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 (Warunek wstępny niespełniony)
If-None-Match 304 (Niezmodyfikowany) 412 (Warunek wstępny niespełniony)
If-Unmodified-Since 412 (Warunek wstępny niespełniony) 412 (Warunek wstępny niespełniony)
If-Match 200 (OK) 412 (Warunek wstępny niespełniony)
If-Modified-Since 200 (OK) 200 (OK)
If-None-Match 304 (Niezmodyfikowany) 200 (OK)
If-Unmodified-Since 200 (OK) 200 (OK)
If-Match 200 (OK) 200 (OK)
If-Modified-Since 304 (Niezmodyfikowany) 412 (Warunek wstępny niespełniony)
If-None-Match 200 (OK) 412 (Warunek wstępny niespełniony)
If-Unmodified-Since 200 (OK) 412 (Warunek wstępny niespełniony)
If-Match 412 (Warunek wstępny niespełniony) 412 (Warunek wstępny niespełniony)
If-Modified-Since 304 (Niezmodyfikowany) 412 (Warunek wstępny niespełniony)
If-None-Match 200 (OK) 412 (Warunek wstępny niespełniony)
If-Unmodified-Since 412 (Warunek wstępny niespełniony) 412 (Warunek wstępny niespełniony)
If-Match 412 (Warunek wstępny niespełniony) 412 (Warunek wstępny niespełniony)
If-Modified-Since 304 (Niezmodyfikowany) 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 (Niezmodyfikowany) 412 (Warunek wstępny niespełniony)
If-None-Match 304 (Niezmodyfikowany) 412 (Warunek wstępny niespełniony)
If-Unmodified-Since 412 (Warunek wstępny niespełniony) 412 (Warunek wstępny niespełniony)
If-Match 200 (OK) 412 (Warunek wstępny niespełniony)

Określ nagłówki warunkowe dla operacji odczytu w wersjach sprzed 2013-08-15 oraz dla operacji zapisu (we wszystkich wersjach)

Wywołując operacje odczytu usługi Blob (Get Blob i Get Blob Properties) z wersjami starszymi niż 2013-08-15 oraz wywołując dowolną operację zapisu, niezależnie od wersji, należy pamiętać o następujących kwestiach:

  • Jeśli żądanie określa zarówno nagłówki , If-None-Match jak i If-Modified-Since , jest oceniane na podstawie kryteriów określonych w .If-None-Match

  • Jeśli żądanie określa zarówno nagłówki , If-Match jak i If-Unmodified-Since , jest oceniane na podstawie kryteriów określonych w .If-Match

  • Z wyjątkiem dwóch wcześniej wymienionych kombinacji nagłówków warunkowych, żądanie może określić tylko jeden nagłówek warunkowy. Wskazanie więcej niż jednego nagłówka warunkowego skutkuje kodem statusowym 400 (Bad Request).

  • Jeśli odpowiedź zawiera ETag, zweryfikowaj wersję żądania i odpowiedzi przed przetworzeniem ETag. Na przykład wersje 2011-08-18 i późniejsze zwracają cytowany ETag, ale starsze wersje tego nie robią. Upewnij się, że Twoja aplikacja może przetworzyć oba formaty ETag przed ich oceną.

  • RFC 2616 pozwala na wiele wartości ETag w jednym nagłówku, ale żądania do usługi Blob mogą zawierać tylko jedną wartość ETag. Wskazanie więcej niż jednej wartości ETag daje kod statusu 400 (Bad Request).

Operacje wspierające nagłówki warunkowe

Operacje obsługujące nagłówki warunkowe opisano w poniższej tabeli.

Operacja REST Typ operacji Obsługiwane nagłówki warunkowe
Blok dołączania

(wersja 2015-02-21 i później)
Napisz Jeśli-zmodyfikowany-od

Jeśli-Niezmodyfikowane-od

If-Match

Jeśli-Żadnego-Dopasowania

x-ms-if-tagi
Dodaj blok z adresu URL

(wersja 2018-11-09 i później)
Napisz Jeśli-zmodyfikowany-od

Jeśli-Niezmodyfikowane-od

If-Match

Jeśli-Żadnego-Dopasowania

x-ms-if-tagi
Kopiuj blob Odczyt i zapis Dla warunków na docelowym blobie:

- Jeśli-zmodyfikowany-od

- Jeśli-Niezmodyfikowane-od

- If-Match

- Jeśli-Żadnego-Dopasowania

- x-ms-if-tagi

Dla warunków na źródłowym blobie:

- 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
Usuń obiekt blob Napisz Jeśli-zmodyfikowany-od

Jeśli-Niezmodyfikowane-od

If-Match

Jeśli-Żadnego-Dopasowania

x-ms-if-tagi
Usuwanie kontenera Napisz Jeśli-zmodyfikowany-od

Jeśli-Niezmodyfikowane-od
Zdobądź Bloba Przeczytaj Jeśli-zmodyfikowany-od

Jeśli-Niezmodyfikowane-od

If-Match

Jeśli-Żadnego-Dopasowania

x-ms-if-tagi
Pobierz metadane obiektu blob Przeczytaj Jeśli-zmodyfikowany-od

Jeśli-Niezmodyfikowane-od

If-Match

Jeśli-Żadnego-Dopasowania

x-ms-if-tagi
Pobierz właściwości obiektu blob Przeczytaj Jeśli-zmodyfikowany-od

Jeśli-Niezmodyfikowane-od

If-Match

Jeśli-Żadnego-Dopasowania

x-ms-if-tagi
Pobierz tagi obiektu Blob

Przeczytaj x-ms-if-tagi (wersja 2019-12-12 i nowsze)

Dla warunków na blob (wersja 2025-11-05 i nowsze):

- x-ms-blob-if-modified-since

- x-ms-blob-if-unmodified-since

- x-ms-blob-jeśli-pasuje

- x-ms-blob-jeśli-nie-pasuje
Pobierz listę bloków Przeczytaj x-ms-if-tagi
Pobierz zakresy stron Przeczytaj Jeśli-zmodyfikowany-od

Jeśli-Niezmodyfikowane-od

If-Match

Jeśli-Żadnego-Dopasowania

x-ms-if-tagi
Dzierżawienie obiektu BLOB Napisz Jeśli-zmodyfikowany-od

Jeśli-Niezmodyfikowane-od

If-Match

Jeśli-Żadnego-Dopasowania

x-ms-if-tagi
Kontener dzierżawy Napisz Jeśli-zmodyfikowany-od

Jeśli-Niezmodyfikowane-od
Wpisz Blob z URL Napisz Jeśli-zmodyfikowany-od

Jeśli-Niezmodyfikowane-od

If-Match

Jeśli-Żadnego-Dopasowania

Dla warunków na źródłowym blobie:

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

- x-ms-source-if-Unmodified-Since

- x-ms-source-If-Match

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

Umieść obiekt blob Napisz Jeśli-zmodyfikowany-od

Jeśli-Niezmodyfikowane-od

If-Match

Jeśli-Żadnego-Dopasowania

x-ms-if-tagi
Umieść blok z adresu URL

(wersja 2018-03-28 i później)
Napisz x-ms-source-If-Modified-Since

x-ms-source-If-Unmodified-Since

x-ms-source-If-Match

x-ms-source-If-None-Match
Lista bloków sprzedaży Napisz Jeśli-zmodyfikowany-od

Jeśli-Niezmodyfikowane-od

If-Match

Jeśli-Żadnego-Dopasowania

x-ms-if-tagi
Umieść stronę Napisz Jeśli-zmodyfikowany-od

Jeśli-Niezmodyfikowane-od

If-Match

Jeśli-Żadnego-Dopasowania

x-ms-if-tagi
Umieść stronę z URL

(wersja 2018-11-09 i później)
Napisz Jeśli-zmodyfikowany-od

Jeśli-Niezmodyfikowane-od

If-Match

Jeśli-Żadnego-Dopasowania

x-ms-if-tagi
Ustawianie metadanych obiektu blob Napisz Jeśli-zmodyfikowany-od

Jeśli-Niezmodyfikowane-od

If-Match

Jeśli-Żadnego-Dopasowania

x-ms-if-tagi
Ustawianie właściwości obiektu blob Napisz Jeśli-zmodyfikowany-od

Jeśli-Niezmodyfikowane-od

If-Match

Jeśli-Żadnego-Dopasowania

x-ms-if-tagi
Ustaw uprawnienia ACL dla kontenera Napisz Jeśli-zmodyfikowany-od

Jeśli-Niezmodyfikowane-od
Ustaw metadane kontenera Napisz Jeśli-zmodyfikowany-od
Ustaw tagi blob

Napisz x-ms-if-tagi (wersja 2019-12-12 i nowsze)

Dla warunków na blob (wersja 2025-11-05 i nowsze):

- x-ms-blob-if-modified-since

- x-ms-blob-if-unmodified-since

- x-ms-blob-jeśli-pasuje

- x-ms-blob-jeśli-nie-pasuje
Ustaw warstwę obiektu blob Napisz x-ms-if-tagi
Blob migawki Przeczytaj Jeśli-zmodyfikowany-od

Jeśli-Niezmodyfikowane-od

If-Match

Jeśli-Żadnego-Dopasowania

x-ms-if-tagi
Ustaw politykę niezmienności blobow Napisz Jeśli-Niezmodyfikowane-od

Poniższe operacje danych usług Blob obecnie nie obsługują warunkowych nagłówków:

Kody odpowiedzi HTTP dla operacji obsługujących nagłówki warunkowe

Jeśli żądanie zawiera nagłówek warunkowy, a żądany zasób nie spełnia określonego warunku, usługa Blob zwraca kod odpowiedzi HTTP. Zwracane kody odpowiedzi są zgodne ze specyfikacją protokołu HTTP/1.1 (RFC 2616).

Metody w bibliotece klienta Azure .NET przekształcają te kody odpowiedzi na błędy na obiekt StorageException.

Operacje odczytu

Poniższa tabela przedstawia kody odpowiedzi zwracane dla niespełnionego warunku dla każdego nagłówka warunkowego, gdy operacja jest operacją odczytu. Operacje czytania używają czasowników GET lub HEAD.

Nagłówek warunkowy Kod odpowiedzi, jeśli warunek nie jest spełniony
If-Modified-Since Nie zmodyfikowane (304 (nie modyfikowane))
If-Unmodified-Since Warunek wstępny niespełniony (412 (Waryfing wstępny niespełniony))
If-Match Warunek wstępny niespełniony (412 (Waryfing wstępny niespełniony))
If-None-Match Nie zmodyfikowane (304 (nie modyfikowane))

Dla wyników przy użyciu wielu nagłówków z wersjami 2013-08-15 lub nowszymi odwołaj się na poprzednie przykłady.

Operacje zapisu

Poniższa tabela przedstawia kody odpowiedzi zwracane dla niespełnionego warunku dla każdego nagłówka warunkowego, gdy operacja jest operacją zapisu. Operacje zapisu używają czasowników PUT lub DELETE.

Nagłówek warunkowy Kod odpowiedzi, jeśli warunek nie jest spełniony
If-Modified-Since Warunek wstępny niespełniony (412 (Waryfing wstępny niespełniony))
If-Unmodified-Since Warunek wstępny niespełniony (412 (Waryfing wstępny niespełniony))
If-Match Warunek wstępny niespełniony (412 (Waryfing wstępny niespełniony))
If-None-Match Warunek wstępny niespełniony (412 (Waryfing wstępny niespełniony))

Operacje kopiowania

Poniższa tabela przedstawia kody odpowiedzi zwracane dla niespełnionego warunku dla każdego nagłówka warunkowego, gdy operacja jest operacją kopiowania. Operacja Copy Blob wykorzystuje czasowniki PUT.

Nagłówek warunkowy Kod odpowiedzi, jeśli warunek nie jest spełniony
If-Modified-Since Warunek wstępny niespełniony (412 (Waryfing wstępny niespełniony))
If-Unmodified-Since Warunek wstępny niespełniony (412 (Waryfing wstępny niespełniony))
If-Match Warunek wstępny niespełniony (412 (Waryfing wstępny niespełniony))
If-None-Match Warunek wstępny niespełniony (412 (Waryfing wstępny niespełniony))
x-ms-source-if-modified-since Warunek wstępny niespełniony (412 (Waryfing wstępny niespełniony))
x-ms-source-if-unmodified-since Warunek wstępny niespełniony (412 (Waryfing wstępny niespełniony))
x-ms-source-if-match Warunek wstępny niespełniony (412 (Waryfing wstępny niespełniony))
x-ms-source-if-none-match Warunek wstępny niespełniony (412 (Waryfing wstępny niespełniony))

Operacje warunkowe tagów

Oprócz standardowych nagłówków warunkowych HTTP obsługiwanych przez usługę Blob, kilka operacji obsługuje także warunki dotyczące tagów na zasobu blob.

Nagłówek warunkowy Description
x-ms-if-tags Wersja 2019-12-12 i nowsza. Wartość TagsPredicate. Określ ten nagłówek tak, aby wykonał operację tylko wtedy, gdy predykat wylicza się do true względem tagów bloba.
x-ms-source-if-tags Wersja 2019-12-12 i nowsza. Dotyczy tylko Copy Bloba. Wartość TagsPredicate. Określ ten nagłówek tak, aby wykonał operację tylko wtedy, gdy predykat wychodzi do true względem tagów źródłowego bloba.

Jeśli x-ms-if-tags nagłówek warunkowy lub x-ms-source-if-tags jest obecny w żądaniu i wychodzi TagsPredicate do false, usługa Blob zwraca kod błędu 412 (Wstępny Failed) dla operacji.

Dzwoniący musi mieć pozwolenie na odczytywanie tagów na blobie, aby użyć x-ms-if-tags nagłówków warunkowych lub x-ms-source-if-tags (al).

Tagi Składnia predykatów

Usługa Blob obsługuje podzbiór gramatyki klauzuli ANSI SQL WHERE dla wartości nagłówka TagsPredicate . Obsługiwane są następujące operatory:

Operator Description Example
= Równy Status = 'In Progress'
<> Nie równa się Status <> 'Done'
> Większe niż LastModified > '2018-06-18 20:51:26Z'
>= Większe niż lub równe Priority >= '05'
< Mniejsze niż Age < '032'
<= Mniejsze lub równe Reviewer <= 'Smith'
AND Logiczna i Name > 'C' AND Name < 'D'
Age > '032' AND Age < '100'
OR Logiczna lub Status = 'Done' or LastModified > '2018-06-18 20:51:26Z'

Wszystkie wartości tagów są ciągami znaków, a obsługiwane binarne operatory relacyjne wykorzystują leksykograficzne sortowanie wartości tagów. Aby wspierać typy danych niebędące ciągami tekstowymi, w tym liczby i daty, konieczne jest zastosowanie odpowiedniego dosypywania i sortowalnego formatowania. Wartości tagów muszą być zapakowane w pojedyncze cudzysłowy.

Jeśli nazwy tagów są zwykłymi identyfikatorami SQL, mogą być obecne bez ucieczki. Jeśli zawierają znaki specjalne, muszą być wyznaczane podwójnymi cudzysłowami, takimi jak "TagName" = 'TagValue'.

Wyrażenia mogą zawierać porównania dla wielu nazw i wartości tagów. Nawiasy (( i )) mogą być używane do grupowania wyrażeń logicznych i kontrolowania kanonicznego porządku działania. A TagsPredicate może zawierać maksymalnie 10 operacji logicznych.

Usługa przechowywania odrzuca każde żądanie zawierające nieprawidłowe wyrażenie o kodie błędu 400 (Złe żądanie).

Zobacz też

Koncepcje usług blob