Przechowywanie wersji dla usługi Azure Storage
Usługa Azure Storage obsługuje wiele wersji. Aby utworzyć żądanie względem usług magazynu, musisz określić wersję, której chcesz użyć dla tej operacji, chyba że żądanie jest anonimowe.
Bieżąca wersja usług Azure Storage to 2024-08-04 i zalecamy używanie jej tam, gdzie to możliwe. Aby uzyskać listę wszystkich innych obsługiwanych wersji oraz informacje o korzystaniu z każdej wersji, zobacz Poprzednie wersje usługi Azure Storage.
Wersja usługi 2024-08-04 obejmuje następujące funkcje:
-
Utwórz udział i ustaw właściwości udziału teraz obsługują
x-ms-enable-snapshot-virtual-directory-access
nagłówek żądania. Ta właściwość jest teraz zwracana jako nagłówek odpowiedzi przez polecenie Pobierz właściwości udziału i jako elementEnableSnapshotVirtualDirectoryAccess
XML zwracany przez udziały listy. - Treść odpowiedzi na błędy związane z uwierzytelnianiem będzie teraz zawierać
ExtendedErrorDetail
element xml, zapewniając więcej kontekstu dotyczącego niepowodzenia uwierzytelniania. Aby uzyskać więcej informacji, zobacz Status and Error Codes (Kody stanu i błędów)
Określanie wersji usługi w żądaniach
Sposób określania wersji usług magazynu do użycia dla żądania odnosi się do sposobu autoryzowania tego żądania. W poniższych sekcjach opisano opcje autoryzacji i sposób określenia wersji usługi dla każdego z nich.
Żądania korzystające z tokenu OAuth 2.0 od firmy Microsoft Entra: aby autoryzować żądanie za pomocą identyfikatora Entra firmy Microsoft, przekaż
x-ms-version
nagłówek żądania do usługi w wersji 2017-11-09 lub nowszej. Aby uzyskać więcej informacji, zobacz Wywoływanie operacji magazynowania przy użyciu tokenów OAuth w temacie Authorize with Microsoft Entra ID (Wywoływanie operacji magazynowania przy użyciu tokenów OAuth w autoryzacji przy użyciu identyfikatora Entra firmy Microsoft).Żądania używające klucza współużytkowanego lub klucza wspólnego Lite: aby autoryzować żądanie za pomocą klucza współużytkowanego lub klucza wspólnego Lite, przekaż
x-ms-version
nagłówek żądania. W przypadku usługi Azure Blob Storage można określić domyślną wersję dla wszystkich żądań, wywołując funkcję Ustaw właściwości usługi Blob Service.Żądania korzystające z sygnatury dostępu współdzielonego (SAS): można określić dwie opcje przechowywania wersji w sygnaturze dostępu współdzielonego. Opcjonalny
api-version
nagłówek wskazuje, której wersji usługi użyć do wykonania operacji interfejsu API. WymaganySignedVersion (sv)
parametr określa wersję usługi do użycia w celu autoryzowania żądania z sygnaturą dostępu współdzielonego.api-version
Jeśli nagłówek nie jest określony, wartość parametruSignedVersion (sv)
wskazuje również wersję używaną do wykonania operacji interfejsu API.Żądania korzystające z dostępu anonimowego: w przypadku dostępu anonimowego do usługi Blob Storage nie jest przekazywana żadna wersja. Heurystyka określania wersji do użycia dla żądania została opisana w następnych sekcjach.
Autoryzowanie żądań przy użyciu identyfikatora Entra firmy Microsoft, klucza wspólnego lub klucza wspólnego Lite
Aby autoryzować żądanie za pomocą identyfikatora Entra firmy Microsoft, klucza wspólnego lub klucza wspólnego Lite, określ x-ms-version
nagłówek żądania. Wartość x-ms-version
nagłówka żądania musi być określona w formacie RRRR-MM-DD. Na przykład:
Request Headers:
x-ms-version: 2020-04-08
W poniższych regułach opisano sposób oceniania tych żądań w celu określenia, która wersja ma być używana do przetwarzania żądania.
Jeśli żądanie ma prawidłowy
x-ms-version
nagłówek, usługa magazynu używa określonej wersji. Wszystkie żądania do usług Azure Table Storage i Azure Queue Storage, które nie używają sygnatury dostępu współdzielonego, muszą określaćx-ms-version
nagłówek. Wszystkie żądania do usługi Blob Storage, które nie używają sygnatury dostępu współdzielonego, muszą określać nagłówek, chyba że ustawiono domyślnąx-ms-version
wersję, zgodnie z opisem w następnym akapicie.Jeśli żądanie do usługi Blob Storage nie ma nagłówka
x-ms-version
, ale właściciel konta ustawił domyślną wersję przy użyciu operacji Ustaw właściwości usługi Blob Service , określona domyślna wersja jest używana jako wersja żądania.
Autoryzowanie żądań przy użyciu sygnatury dostępu współdzielonego
Sygnatura dostępu współdzielonego wygenerowana przy użyciu wersji 2014-02-14 lub nowszej obsługuje dwie opcje przechowywania wersji:
Parametr
api-version
zapytania definiuje wersję protokołu REST do użycia do przetwarzania żądania, które jest wykonywane przy użyciu sygnatury dostępu współdzielonego.Parametr
SignedVersion (sv)
zapytania definiuje wersję sygnatury dostępu współdzielonego do użycia na potrzeby autoryzacji.
Parametr SignedVersion
zapytania jest używany do autoryzacji, gdy klient wysyła żądanie przy użyciu sygnatury dostępu współdzielonego. Parametry autoryzacji, takie jak si
, , st
se
sig
sp
sr
spk
srk
tn
, epk
i erk
są interpretowane przy użyciu określonej wersji.
Parametry protokołu REST, takie jak rscc
, rscd
, rsce
, rscl
i rsct
, są wymuszane przy użyciu wersji podanej w nagłówku parametru api-version
.
api-version
Jeśli nagłówek nie zostanie określony, zostanie użyta wersja usługi podana dla SignedVersion
polecenia .
Parametr api-version
nie jest częścią nagłówka autoryzacji typu string-to-sign in the authorization, zgodnie z opisem w temacie Create a service SAS (Tworzenie sygnatury dostępu współdzielonego usługi).
W poniższej tabeli wyjaśniono schemat przechowywania wersji używany przez usługę do autoryzacji i wywoływania protokołu REST, gdy SignedVersion
parametr jest ustawiony na wersję 2014-02-14 lub nowszą.
Wartość parametru api-version | Wersja używana do autoryzacji | Wersja używana do zachowania protokołu |
---|---|---|
Nie określono | Wersja określona w parametrze sv |
Wersja określona w parametrze sv |
Dowolna prawidłowa wersja usług magazynu w formacie XXXX-XX-XX |
Wersja określona w parametrze sv |
Prawidłowa wersja usług magazynu XXXX-XX-XX |
Przykład 1
Następujące przykładowe żądanie wywołuje metodę List Blobs z parametrem sv=2015-04-05
i bez parametru api-version
.
https://myaccount.blob.core.windows.net/mycontainer?restype=container&comp=list&sv=2015-04-05&si=readpolicy&sig=a39 %2BYozJhGp6miujGymjRpN8tsrQfLo9Z3i8IRyIpnQ%3d
W takim przypadku usługa uwierzytelnia i autoryzuje żądanie przy użyciu wersji 2015-04-05 i uruchamia operację przy użyciu wersji 2015-04-05.
Przykład 2
Następujące przykładowe żądanie wywołuje metodę List Blobs za pomocą sv=2015-04-05
parametru api-version
i .
https://myaccount.blob.core.windows.net/mycontainer?restype=container&comp=list&sv=2015-04-05&si=readpolicy&sig=a39 %2BYozJhGp6miujGymjRpN8tsrQfLo9Z3i8IRyIpnQ%3d&api-version=2012-02-12
W tym miejscu usługa autoryzuje żądanie przy użyciu wersji 2015-04-05 i uruchamia operację przy użyciu wersji 2012-02-12.
Uwaga
Biblioteka klienta usługi Storage platformy .NET zawsze ustawia wersję protokołu REST (w parametrze api-version
) na wersję, na podstawie którego jest oparta.
Żądania za pośrednictwem dostępu anonimowego
Żądania, które są wykonywane za pośrednictwem dostępu anonimowego, są obsługiwane inaczej w zależności od typu konta magazynu, względem którego są wykonywane.
W przypadku kont magazynu ogólnego przeznaczenia
Jeśli anonimowe żądanie do konta magazynu ogólnego przeznaczenia nie określa x-ms-version
nagłówka, a domyślna wersja usługi nie została ustawiona przy użyciu ustawiania właściwości usługi Blob Service, usługa używa najwcześniejszej możliwej wersji do przetworzenia żądania. Jeśli jednak kontener został upubliczniony za pomocą operacji ustawiania listy ACL kontenera , która została wykonana przy użyciu wersji 2009-09-19 lub nowszej, żądanie jest przetwarzane przy użyciu wersji 2009-09-19.
W przypadku kont usługi Blob Storage
Jeśli anonimowe żądanie do konta usługi Blob Storage nie określa nagłówka x-ms-version
, a domyślna wersja usługi nie została ustawiona przy użyciu ustawiania właściwości usługi Blob Service, usługa używa najwcześniejszej możliwej wersji do przetworzenia żądania. W przypadku konta usługi Blob Storage najwcześniejsza możliwa wersja to 2014-02-14.
Znane problemy
W tej sekcji szczegółowo przedstawiono znane problemy dotyczące interfejsów API REST usługi Azure Storage.
InvalidHeaderValue
Komunikat o błędzie
W rzadkich scenariuszach aplikacje wykonujące bezpośrednie wywołania interfejsu API REST mogą otrzymywać InvalidHeaderValue
komunikat o błędzie. Błąd wygląda podobnie do następującego przykładu:
HTTP/1.1 400 The value for one of the HTTP headers is not in the correct format.
Content-Length: 328
Content-Type: application/xml
Server: Microsoft-HTTPAPI/2.0
x-ms-request-id: <REMOVED>
Date: Fri, 19 May 2023 17:10:33 GMT
<?xml version="1.0" encoding="utf-8"?><Error><Code>InvalidHeaderValue</Code><Message>The value for one of the HTTP headers is not in the correct format.
RequestId:<REMOVED>
Time:2023-05-19T17:10:34.2972651Z</Message><HeaderName>x-ms-version</HeaderName><HeaderValue>yyyy-mm-dd</HeaderValue></Error>
Zaleca się użycie wcześniejszej wersji interfejsu API REST, aby sprawdzić, czy problem został rozwiązany. Jeśli problem będzie się powtarzać lub jeśli zalecenie nie jest możliwe, otwórz bilet pomocy technicznej , aby omówić dalsze opcje.