Przechowywanie wersji dla usługi Azure Storage
Usługa Azure Storage obsługuje wiele wersji. Aby wysłać żądanie względem usług magazynu, należy 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-11-04 i zalecamy, aby używać jej tam, gdzie to możliwe. Aby uzyskać listę wszystkich innych obsługiwanych wersji oraz informacje na temat korzystania z każdej wersji, zobacz Poprzednie wersje usługi Azure Storage.
Wersja usługi 2024-11-04 obejmuje następujące funkcje:
- Obsługa uwierzytelniania opartego na tokenach dla wszystkich interfejsów API płaszczyzny danych w usłudze plików. Aby uzyskać więcej informacji, zobacz Authorize with Microsoft Entra ID.
- Obsługa płatnych wzrostów liczby kont udziałów plików w warstwie Premium. Tę funkcję można włączyć za pomocą interfejsów API Create Share i Set Share Properties API.
- Obsługa formatu binarnego podczas pobierania i ustawiania uprawnień do pliku w usłudze plików. Aby uzyskać więcej informacji, zobacz Tworzenie uprawnień i Uzyskiwanie uprawnień
Określanie wersji usługi w żądaniach
Sposób określania wersji usług magazynu, które mają być używane 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 używające tokenu OAuth 2.0 z witryny Microsoft Entra: Aby autoryzować żądanie za pomocą identyfikatora Entra firmy Microsoft, przekaż nagłówek
x-ms-version
na żądanie przy użyciu wersji usługi 2017-11-09 lub nowszej. Aby uzyskać więcej informacji, zobacz Call storage operations with OAuth tokens in Authorize with Microsoft Entra ID.żądania używające klucza współużytkowanego lub klucza współużytkowanego: Aby autoryzować żądanie za pomocą klucza współużytkowanego lub klucza współużytkowanego Lite, przekaż nagłówek
x-ms-version
na żądanie. W przypadku usługi Azure Blob Storage można określić domyślną wersję dla wszystkich żądań, wywołując Ustaw właściwości usługi Blob Service.Żądania używające sygnatury dostępu współdzielonego (SAS): można określić dwie opcje przechowywania wersji w sygnaturze dostępu współdzielonego. Opcjonalny nagłówek
api-version
wskazuje, która wersja usługi ma być używana do wykonania operacji interfejsu API. Wymagany parametrSignedVersion (sv)
określa wersję usługi do użycia w celu autoryzowania żądania przy użyciu sygnatury dostępu współdzielonego. Jeśli nie określono nagłówkaapi-version
, wartość parametruSignedVersion (sv)
wskazuje również wersję do użycia 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, która ma być używana 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ółużytkowanego lub klucza wspólnego Lite, określ nagłówek x-ms-version
żądania. Wartość nagłówka żądania x-ms-version
musi być określona w formacie RRRR-MM-DD. Na przykład:
Request Headers:
x-ms-version: 2020-04-08
Poniższe reguły opisują 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 nagłówek
x-ms-version
, usługa magazynu używa określonej wersji. Wszystkie żądania usług Azure Table Storage i Azure Queue Storage, które nie używają sygnatury dostępu współdzielonego, muszą określać nagłówekx-ms-version
. Wszystkie żądania do usługi Blob Storage, które nie używają sygnatury dostępu współdzielonego, muszą określić nagłówekx-ms-version
, chyba że została ustawiona domyślna wersja, 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 wersja domyślna jest używana jako wersja żądania.
Autoryzowanie żądań przy użyciu sygnatury dostępu współdzielonego
Sygnatura dostępu współdzielonego (SAS) wygenerowana przy użyciu wersji 2014-02-14 lub nowszej obsługuje dwie opcje przechowywania wersji:
Parametr zapytania
api-version
definiuje wersję protokołu REST do użycia do przetwarzania żądania, które jest wykonywane przy użyciu sygnatury dostępu współdzielonego.Parametr zapytania
SignedVersion (sv)
definiuje wersję sygnatury dostępu współdzielonego do użycia do autoryzacji.
Parametr zapytania SignedVersion
jest używany do autoryzacji, gdy klient wysyła żądanie przy użyciu sygnatury dostępu współdzielonego. Parametry autoryzacji, takie jak si
, sr
, sp
, sig
, st
, se
, tn
, spk
, srk
, 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
. Jeśli nagłówek api-version
nie jest określony, używana jest wersja usługi podana dla SignedVersion
.
Parametr api-version
nie jest częścią nagłówka autoryzacji typu ciąg-logowanie, zgodnie z opisem w 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 parametr SignedVersion
jest ustawiony na wersję 2014-02-14 lub nowszą.
Wartość parametru |
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 List Blobs z 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 List Blobs z sv=2015-04-05
i parametrem api-version
.
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.
Nuta
Biblioteka klienta usługi .NET Storage 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 nagłówka x-ms-version
, a domyślna wersja usługi nie została ustawiona przy użyciu Ustaw 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 przy użyciu Set Container ACL operacji, 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 Ustaw 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
Ta sekcja zawiera szczegółowe informacje o znanych problemach z interfejsami API REST usługi Azure Storage.
komunikat o błędzie InvalidHeaderValue
W rzadkich scenariuszach aplikacje wykonujące bezpośrednie wywołania interfejsu API REST mogą odbierać komunikat o błędzie InvalidHeaderValue
. 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 starszej wersji interfejsu API REST, aby sprawdzić, czy problem zostanie rozwiązany. Jeśli problem będzie się powtarzać lub jeśli zalecenie nie jest możliwe, otworzyć bilet pomocy technicznej w celu omówienia dalszych opcji.