Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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-Matchjak iIf-Modified-Since, jest oceniane na podstawie kryteriów określonych w .If-None-MatchJeśli żądanie określa zarówno nagłówki ,
If-Matchjak iIf-Unmodified-Since, jest oceniane na podstawie kryteriów określonych w .If-MatchZ 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).