Versionshantering för Azure Storage
Azure Storage stöder flera versioner. Om du vill göra en begäran mot lagringstjänsterna måste du ange den version som du vill använda för den åtgärden, såvida inte begäran är anonym.
Den aktuella versionen av Azure Storage-tjänsterna är 2024-11-04, och vi rekommenderar att du använder den där det är möjligt. En lista över alla andra versioner som stöds och information om hur du använder varje version finns i Tidigare Azure Storage-tjänstversioner.
Tjänstversionen 2024-11-04 innehåller följande funktioner:
- Stöd för tokenbaserad autentisering för alla API:er för dataplan i filtjänsten. Mer information finns i Auktorisera med Microsoft Entra ID.
- Stöd för betald bursting på premiumfilresurskonton. Den här funktionen kan aktiveras med Skapa resurs och Ange resursegenskaper API:er.
- Stöd för binärt format när du hämtar och anger filbehörigheter i filtjänsten. Mer information finns i Skapa behörighet och Hämta behörighet
Ange tjänstversioner i begäranden
Hur du anger vilken version av lagringstjänsterna som ska användas för en begäran relaterar till hur begäran är auktoriserad. I följande avsnitt beskrivs auktoriseringsalternativ och hur tjänstversionen anges för var och en.
Begäranden som använder en OAuth 2.0-token från Microsoft Entra: Om du vill auktorisera en begäran med Microsoft Entra-ID skickar du
x-ms-version
-huvudet på begäran med en tjänstversion av 2017-11-09 eller senare. Mer information finns i Anropa lagringsåtgärder med OAuth-token i Auktorisera med Microsoft Entra ID.begäranden som använder delad nyckel eller delad nyckel Lite: Skicka
x-ms-version
-huvudet på begäran om du vill auktorisera en begäran med delad nyckel eller delad nyckel lite. När det gäller Azure Blob Storage kan du ange standardversionen för alla begäranden genom att anropa Ange blobtjänstegenskaper.Begäranden som använder en signatur för delad åtkomst (SAS): Du kan ange två versionsalternativ för en signatur för delad åtkomst. Det valfria
api-version
-huvudet anger vilken tjänstversion som ska användas för att köra API-åtgärden. Den obligatoriskaSignedVersion (sv)
-parametern anger den tjänstversion som ska användas för att auktorisera den begäran som görs med SAS. Omapi-version
-huvudet inte har angetts anger värdet för parameternSignedVersion (sv)
också vilken version som ska användas för att köra API-åtgärden.Begäranden som använder anonym åtkomst: Vid anonym åtkomst mot Blob Storage skickas ingen version. Heuristiken för att avgöra vilken version som ska användas för begäran beskrivs i nästa avsnitt.
Auktorisera begäranden med hjälp av Microsoft Entra-ID, delad nyckel eller delad nyckel lite
Om du vill auktorisera en begäran med Microsoft Entra ID, Delad nyckel eller Delad nyckel Lite anger du x-ms-version
-huvudet på begäran. Värdet för x-ms-version
begärandehuvud måste anges i formatet ÅÅÅÅ-MM-DD. Till exempel:
Request Headers:
x-ms-version: 2020-04-08
Följande regler beskriver hur dessa begäranden utvärderas för att avgöra vilken version som ska användas för att bearbeta begäran.
Om en begäran har ett giltigt
x-ms-version
huvud använder lagringstjänsten den angivna versionen. Alla begäranden till Azure Table Storage och Azure Queue Storage som inte använder en signatur för delad åtkomst måste ange ettx-ms-version
-huvud. Alla begäranden till Blob Storage som inte använder en signatur för delad åtkomst måste ange ettx-ms-version
-huvud om inte standardversionen har angetts, enligt beskrivningen i nästa stycke.Om en begäran till Blob Storage inte har ett
x-ms-version
-huvud, men kontoägaren har angett en standardversion med hjälp av åtgärden Ange blobtjänstegenskaper, används den angivna standardversionen som version för begäran.
Auktorisera begäranden med hjälp av en signatur för delad åtkomst
En signatur för delad åtkomst (SAS) som genereras med hjälp av version 2014-02-14 eller senare stöder två versionsalternativ:
Frågeparametern
api-version
definierar restprotokollversionen som ska användas för bearbetning av en begäran som görs med hjälp av SAS.Frågeparametern
SignedVersion (sv)
definierar den SAS-version som ska användas för auktorisering.
Frågeparametern SignedVersion
används för auktorisering när en klient gör en begäran med hjälp av SAS. Auktoriseringsparametrar som si
, sr
, sp
, sig
, st
, se
, tn
, spk
, srk
, epk
och erk
tolkas med den angivna versionen.
REST-protokollparametrar som rscc
, rscd
, rsce
, rscl
och rsct
tillämpas med hjälp av den version som anges i api-version
parameterrubrik. Om api-version
-huvudet inte har angetts används den tjänstversion som tillhandahålls för SignedVersion
.
Parametern api-version
är inte en del av sträng-till-inloggningen i auktoriseringshuvudet, enligt beskrivningen i Create a service SAS.
I följande tabell beskrivs versionsschemat som används av tjänsten för auktorisering och för att anropa REST-protokollet när parametern SignedVersion
anges till version 2014-02-14 eller senare.
Värdet för parametern api-version | Version som används för auktorisering | Version som används för protokollbeteende |
---|---|---|
Inte angivet | Version som anges i parametern sv |
Version som anges i parametern sv |
Alla giltiga lagringstjänster i format XXXX-XX-XX |
Version som anges i parametern sv |
Giltig version av lagringstjänster XXXX-XX-XX |
Exempel 1
Följande exempelbegäran anropar listblobar med sv=2015-04-05
och utan parametern api-version
.
https://myaccount.blob.core.windows.net/mycontainer?restype=container&comp=list&sv=2015-04-05&si=readpolicy&sig=a39 %2BYozJhGp6miujGymjRpN8tsrQfLo9Z3i8IRyIpnQ%3d
I det här fallet autentiserar och auktoriserar tjänsten begäran med hjälp av version 2015-04-05, och den kör åtgärden med hjälp av version 2015-04-05.
Exempel 2
Följande exempelbegäran anropar listblobar med sv=2015-04-05
och med parametern 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
Här auktoriserar tjänsten begäran med hjälp av version 2015-04-05 och kör åtgärden med hjälp av version 2012-02-12.
Not
.NET Storage-klientbiblioteket anger alltid REST-protokollversionen (i parametern api-version
) till den version som den baseras på.
Begäranden via anonym åtkomst
Begäranden som görs via anonym åtkomst hanteras på olika sätt, beroende på vilken typ av lagringskonto de görs mot.
För allmänna lagringskonton
Om en anonym begäran till ett allmänt lagringskonto inte anger x-ms-version
-huvudet och standardversionen för tjänsten inte har angetts med hjälp av Ange blobtjänstegenskaperanvänder tjänsten den tidigaste möjliga versionen för att bearbeta begäran. Men om containern offentliggjordes med en Ange container-ACL åtgärd som utfördes med version 2009-09-19 eller senare bearbetas begäran med version 2009-09-19.
För Blob Storage-konton
Om en anonym begäran till ett Blob Storage-konto inte anger x-ms-version
-huvudet och standardversionen för tjänsten inte har angetts med hjälp av Ange blobtjänstegenskaperanvänder tjänsten den tidigaste möjliga versionen för att bearbeta begäran. För ett Blob Storage-konto är den tidigaste möjliga versionen 2014-02-14.
Kända problem
I det här avsnittet beskrivs kända problem för REST-API:er för Azure Storage.
InvalidHeaderValue
felmeddelande
I sällsynta fall kan program som gör direkta REST API-anrop få ett InvalidHeaderValue
felmeddelande. Felet ser ut ungefär som i följande exempel:
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>
Vi rekommenderar att du använder en tidigare REST API-version för att se om problemet löser sig. Om problemet kvarstår eller om rekommendationen inte är möjlig kan du öppna ett supportärende för att diskutera ytterligare alternativ.