Správa verzí pro Azure Storage
Azure Storage podporuje více verzí. Pokud chcete provést požadavek na služby Storage a tento požadavek není anonymní, musíte zadat verzi, kterou pro danou operaci chcete použít.
Aktuální verze služeb Azure Storage je 2024-08-04 a doporučujeme ji používat tam, kde je to možné. Seznam všech ostatních podporovaných verzí a informace o používání jednotlivých verzí najdete v tématu Předchozí verze služby Azure Storage.
Verze služby z 8. 8. 2024 obsahuje následující funkce:
- Vytvořit sdílenou složku a nastavit vlastnosti sdílené složky teď podporuje hlavičku
x-ms-enable-snapshot-virtual-directory-access
požadavku. Tato vlastnost je nyní vrácena jako hlavičku odpovědi příkazem Get Share Properties a jako elementEnableSnapshotVirtualDirectoryAccess
XML vrácený sdílenými složkami seznamu. - Těla chybových odpovědí souvisejících s ověřováním teď budou obsahovat
ExtendedErrorDetail
element xml, který poskytuje další kontext selhání ověřování. Další informace najdete v tématu Stavové kódy a kódy chyb.
Určení verzí služby v požadavcích
Způsob, jakým určíte verzi služeb úložiště, které se mají použít pro žádost, souvisí s tím, jak je tato žádost autorizována. Následující části popisují možnosti autorizace a způsob, jakým je pro každou z nich zadaná verze služby.
Požadavky, které používají token OAuth 2.0 od Microsoft Entra: Pokud chcete autorizovat žádost s ID Microsoft Entra, předejte
x-ms-version
hlavičku žádosti s verzí služby 2017-11-09 nebo vyšší. Další informace najdete v tématu Volání operací úložiště s tokeny OAuth v tématu Autorizace pomocí Id Microsoft Entra.Požadavky, které používají sdílený klíč nebo sdílený klíč Lite: Pokud chcete autorizovat žádost se sdíleným klíčem nebo sdíleným klíčem Lite, předejte hlavičku
x-ms-version
požadavku. V případě služby Azure Blob Storage můžete zadat výchozí verzi pro všechny požadavky voláním nastavit vlastnosti služby Blob Service.Požadavky, které používají sdílený přístupový podpis (SAS): U sdíleného přístupového podpisu můžete zadat dvě možnosti správy verzí. Volitelná
api-version
hlavička označuje, jakou verzi služby se má použít ke spuštění operace rozhraní API. PožadovanýSignedVersion (sv)
parametr určuje verzi služby, která se má použít k autorizaci požadavku vytvořeného pomocí SAS. Pokud hlavičkaapi-version
není zadaná, hodnota parametruSignedVersion (sv)
také označuje verzi, která se má použít ke spuštění operace rozhraní API.Požadavky, které používají anonymní přístup: V případě anonymního přístupu ke službě Blob Storage se nepředá žádná verze. Heuristika pro určení verze, která se má použít pro požadavek, jsou popsány v dalších částech.
Autorizace žádostí pomocí Microsoft Entra ID, sdíleného klíče nebo sdíleného klíče Lite
Pokud chcete autorizovat žádost pomocí Microsoft Entra ID, sdíleného klíče nebo sdíleného klíče Lite, zadejte x-ms-version
hlavičku požadavku. Hodnota x-ms-version
hlavičky požadavku musí být zadána ve formátu RRRR-MM-DD. Příklad:
Request Headers:
x-ms-version: 2020-04-08
Následující pravidla popisují, jak se tyto požadavky vyhodnocují, aby se určila verze, která se má použít ke zpracování požadavku.
Pokud má požadavek platnou
x-ms-version
hlavičku, služba úložiště použije zadanou verzi. Všechny požadavky na Azure Table Storage a Azure Queue Storage, které nepoužívají sdílený přístupový podpis, musí zadat hlavičkux-ms-version
. Všechny požadavky na službu Blob Storage, které nepoužívají sdílený přístupový podpis, musí obsahovat hlavičkux-ms-version
, pokud není nastavená výchozí verze, jak je popsáno v následujícím odstavci.Pokud požadavek na Blob Storage nemá hlavičku
x-ms-version
, ale vlastník účtu nastavil výchozí verzi pomocí operace Nastavit vlastnosti služby Blob Service , použije se jako verze pro požadavek zadaná výchozí verze.
Autorizace žádostí pomocí sdíleného přístupového podpisu
Sdílený přístupový podpis (SAS) vygenerovaný pomocí verze 2014-02-14 nebo novější podporuje dvě možnosti správy verzí:
Parametr
api-version
dotazu definuje verzi protokolu REST, která se má použít ke zpracování požadavku vytvořeného pomocí SAS.Parametr
SignedVersion (sv)
dotazu definuje verzi SAS, která se má použít k autorizaci.
Parametr SignedVersion
dotazu se používá k autorizaci, když klient odešle požadavek pomocí SAS. Parametry autorizace, jako si
jsou , sr
, , st
tn
sig
sp
spk
srk
se
, epk
a erk
, jsou interpretovány pomocí zadané verze.
Parametry protokolu REST, jako rscc
jsou , rsce
rscd
, rscl
arsct
, se vynucují pomocí verze, která je k dispozici v hlavičce parametruapi-version
. Pokud hlavička api-version
není zadaná, použije se verze služby, pro kterou je k dispozici SignedVersion
.
Parametr api-version
není součástí hlavičky autorizace typu string-to-sign, jak je popsáno v tématu Vytvoření SAS služby.
Následující tabulka vysvětluje schéma správy verzí, které služba používá k autorizaci a volání protokolu REST, pokud SignedVersion
je parametr nastavený na verzi 2014-02-14 nebo novější.
Hodnota parametru api-version | Verze použitá k autorizaci | Verze používaná pro chování protokolu |
---|---|---|
Nezadá se | Verze zadaná v parametru sv |
Verze zadaná v parametru sv |
Libovolná platná verze služeb úložiště ve formátu XXXX-XX-XX |
Verze zadaná v parametru sv |
Platná verze služeb úložiště XXXX-XX-XX |
Příklad 1
Následující ukázkový požadavek volá výpis objektů blob pomocí sv=2015-04-05
a 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
V tomto případě služba ověří a autorizuje požadavek pomocí verze 2015-04-05 a spustí operaci pomocí verze 2015-04-05.
Příklad 2
Následující ukázkový požadavek volá výpis objektů blob pomocí sv=2015-04-05
a s 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
Tady služba autorizuje požadavek pomocí verze 2015-04-05 a spustí operaci pomocí verze 2012-02-12.
Poznámka
Klientská knihovna .NET Storage vždy nastaví verzi protokolu REST (v parametru api-version
) na verzi, na které je založena.
Žádosti prostřednictvím anonymního přístupu
Požadavky, které se provádějí prostřednictvím anonymního přístupu, se zpracovávají odlišně v závislosti na typu účtu úložiště, pro který jsou vytvořené.
Účty úložiště pro obecné účely
Pokud anonymní požadavek na účet úložiště pro obecné účely neurčuje hlavičku x-ms-version
a výchozí verze pro službu nebyla nastavena pomocí nastavení vlastností služby Blob Service, služba ke zpracování žádosti použije nejstarší možnou verzi. Pokud se ale kontejner zveřejnil pomocí operace Set Container ACL , která byla provedena pomocí verze 2009-09-19 nebo novější, zpracuje se požadavek pomocí verze 2009-09-19.
Pro účty Blob Storage
Pokud anonymní požadavek na účet služby Blob Storage hlavičku x-ms-version
neurčuje a výchozí verze pro službu nebyla nastavena pomocí nastavení vlastností služby Blob, služba ke zpracování žádosti použije nejstarší možnou verzi. Pro účet Blob Storage je nejstarší možná verze 2014-02-14.
Známé problémy
Tato část popisuje známé problémy s rozhraními REST API služby Azure Storage.
InvalidHeaderValue
chybová zpráva
Ve výjimečných scénářích můžou aplikace provádějící přímá volání rozhraní REST API obdržet chybovou InvalidHeaderValue
zprávu. Chyba vypadá podobně jako v následujícím příkladu:
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>
Doporučujeme použít starší verzi rozhraní REST API, abyste zjistili, jestli se problém vyřeší. Pokud problém přetrvává nebo pokud doporučení není proveditelné, otevřete lístek podpory a prodiskutujte další možnosti.