Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
GÄLLER FÖR: Alla API Management-nivåer
Principen validate-headers validerar svarshuvudena mot API-schemat.
Viktigt!
Om du importerade ett API med en hanterings-API-version före 2021-01-01-previewkanske validate-headers principen inte fungerar. Du kan behöva importera api:et igen med hjälp av hanterings-API-versionen 2021-01-01-preview eller senare.
Kommentar
Den maximala storleken på API-schemat som kan användas av den här valideringsprincipen är 4 MB. Om schemat överskrider den här gränsen returnerar valideringsprinciper fel vid körning. Kontakta supporten om du vill öka den.
Kommentar
Ange principens element och underordnade element i den ordning som anges i principbeskrivningen. För att hjälpa dig att konfigurera den här principen tillhandahåller portalen en guidad, formulärbaserad redigerare. Läs mer om hur du anger eller redigerar API Management-principer.
Principuttryck
<validate-headers specified-header-action="ignore | prevent | detect" unspecified-header-action="ignore | prevent | detect" errors-variable-name="variable name">
    <header name="header name" action="ignore | prevent | detect" />
</validate-headers>
Attribut
| Attribut | beskrivning | Obligatoriskt | Standardvärde | 
|---|---|---|---|
| specified-header-action | Åtgärd att utföra för svarshuvuden som anges i API-schemat. Principuttryck tillåts. | Ja | Ej tillämpligt | 
| unspecified-header-action | Åtgärd att utföra för svarshuvuden som inte anges i API-schemat. Principuttryck tillåts. | Ja | Ej tillämpligt | 
| errors-variable-name | Namnet på variabeln i context.Variablesför att logga valideringsfel till. Principuttryck tillåts inte. | Nej | Ej tillämpligt | 
Element
| Namn | beskrivning | Obligatoriskt | 
|---|---|---|
| sidhuvud | Lägg till ett eller flera element för namngivna rubriker för att åsidosätta standardverifieringsåtgärderna för huvuden i svar. | Nej | 
Åtgärder
Innehållsvalideringsprinciperna innehåller ett eller flera attribut som anger en åtgärd, som API Management tar när en entitet verifieras i en API-begäran eller ett svar mot API-schemat.
- En åtgärd kan anges för element som representeras i API-schemat och, beroende på principen, för element som inte representeras i API-schemat. 
- En åtgärd som anges i en princips underordnade element åsidosätter en åtgärd som angetts för dess överordnade element. 
Tillgängliga åtgärder:
| Åtgärd | beskrivning | 
|---|---|
| bortse från | Hoppa över validering. | 
| hindra | Blockera bearbetningen av begäran eller svar, logga det utförliga valideringsfelet och returnera ett fel. Bearbetningen avbryts när den första uppsättningen fel identifieras. | 
| upptäcka | Loggvalideringsfel, utan att avbryta bearbetningen av begäran eller svar. | 
Förbrukning
- Principavsnitt: utgående, on-error
- Principomfattningar: global, arbetsyta, produkt, API, åtgärd
- Gatewayer: klassisk, v2, förbrukning, lokalt installerad, arbetsyta
Användningsanteckningar
- Den här principen kan bara användas en gång i ett principavsnitt.
Loggar
Information om valideringsfelen under principkörningen loggas till variabeln som anges i context.Variableserrors-variable-name attributet i principens rotelement. När det konfigureras i en prevent åtgärd blockerar ett valideringsfel ytterligare bearbetning av förfrågningar eller svar och sprids även till egenskapen context.LastError .
Om du vill undersöka fel använder du en spårningsprincip för att logga felen från kontextvariabler till Application Insights.
Prestandaöverväganden
Att lägga till en valideringsprincip kan påverka API-dataflödet. Följande allmänna principer gäller:
- Ju större API-schemastorlek desto lägre blir dataflödet.
- Ju större nyttolast i en begäran eller ett svar, desto lägre blir dataflödet.
- Storleken på API-schemat har en större inverkan på prestanda än storleken på nyttolasten.
- Validering mot ett API-schema som är flera megabyte i storlek kan orsaka tidsgränser för begäran eller svar under vissa förhållanden. Effekten är mer uttalad i förbruknings- och utvecklarnivåerna för tjänsten.
Vi rekommenderar att du utför belastningstester med dina förväntade produktionsarbetsbelastningar för att utvärdera effekten av valideringsprinciper på API-dataflödet.
Exempel
<validate-headers specified-header-action="ignore" unspecified-header-action="prevent" errors-variable-name="responseHeadersValidation" />
Valideringsfel
API Management genererar innehållsverifieringsfel i följande format:
{
 "Name": string,
 "Type": string,
 "ValidationRule": string,
 "Details": string,
 "Action": string
}
I följande tabell visas alla möjliga fel i valideringsprinciperna.
- Information: Kan användas för att undersöka fel. Inte tänkt att delas offentligt.
- Offentligt svar: Felet returnerades till klienten. Läcker inte implementeringsinformation.
När en valideringsprincip prevent anger åtgärden och genererar ett fel innehåller svaret från API Management en HTTP-statuskod: 400 när principen tillämpas i avsnittet inkommande trafik och 502 när principen tillämpas i avsnittet för utgående trafik.
| Namn | Typ | Verifieringsuttryck | Detaljer | Offentligt svar | Åtgärd | 
|---|---|---|---|---|---|
| validate-content | |||||
| Begärningsinnehåll | SizeLimit | Begärandetexten är {size} byte lång och överskrider den konfigurerade gränsen på {maxSize} byte. | Begärandetexten är {size} byte lång och överskrider gränsen på {maxSize} byte. | identifiera/förhindra | |
| ResponseBody | SizeLimit | Svarets brödtext är {size} byte lång och överskrider den konfigurerade gränsen på {maxSize} byte. | Det gick inte att bearbeta begäran på grund av ett internt fel. Kontakta API-ägaren. | identifiera/förhindra | |
| {messageContentType} | Begärningsinnehåll | Ospecificerad | Den ospecificerade innehållstypen {messageContentType} är inte tillåten. | Den ospecificerade innehållstypen {messageContentType} är inte tillåten. | identifiera/förhindra | 
| {messageContentType} | ResponseBody | Ospecificerad | Den ospecificerade innehållstypen {messageContentType} är inte tillåten. | Det gick inte att bearbeta begäran på grund av ett internt fel. Kontakta API-ägaren. | identifiera/förhindra | 
| ApiSchema (på engelska) | API:ets schema finns inte eller så gick det inte att matcha det. | Det gick inte att bearbeta begäran på grund av ett internt fel. Kontakta API-ägaren. | identifiera/förhindra | ||
| ApiSchema (på engelska) | API:s schema anger inte definitioner. | Det gick inte att bearbeta begäran på grund av ett internt fel. Kontakta API-ägaren. | identifiera/förhindra | ||
| {messageContentType} | RequestBody/ResponseBody | MissingDefinition | API:s schema innehåller inte definitionen {definitionName}, som är associerad med innehållstypen {messageContentType}. | Det gick inte att bearbeta begäran på grund av ett internt fel. Kontakta API-ägaren. | identifiera/förhindra | 
| {messageContentType} | Begärningsinnehåll | IncorrectMessage | Brödtexten i begäran överensstämmer inte med definitionen {definitionName}, som är associerad med innehållstypen {messageContentType}. {valError.Message} Rad: {valError.LineNumber}, Position: {valError.LinePosition} | Brödtexten i begäran överensstämmer inte med definitionen {definitionName}, som är associerad med innehållstypen {messageContentType}. {valError.Message} Rad: {valError.LineNumber}, Position: {valError.LinePosition} | identifiera/förhindra | 
| {messageContentType} | ResponseBody | IncorrectMessage | Brödtexten i svaret överensstämmer inte med definitionen {definitionName}, som är associerad med innehållstypen {messageContentType}. {valError.Message} Rad: {valError.LineNumber}, Position: {valError.LinePosition} | Det gick inte att bearbeta begäran på grund av ett internt fel. Kontakta API-ägaren. | identifiera/förhindra | 
| Begärningsinnehåll | ValidationException | Det går inte att verifiera brödtexten i begäran för innehållstypen {messageContentType}. {undantagsinformation} | Det gick inte att bearbeta begäran på grund av ett internt fel. Kontakta API-ägaren. | identifiera/förhindra | |
| ResponseBody | ValidationException | Det går inte att verifiera svarets brödtext för innehållstypen {messageContentType}. {undantagsinformation} | Det gick inte att bearbeta begäran på grund av ett internt fel. Kontakta API-ägaren. | identifiera/förhindra | |
| validate-parameters/validate-headers | |||||
| {paramName} / {headerName} | QueryParameter/PathParameter/RequestHeader | Ospecificerad | Ospecificerad {path parameter/frågeparameter/header} {paramName} tillåts inte. | Ospecificerad {path parameter/frågeparameter/header} {paramName} tillåts inte. | identifiera/förhindra | 
| {headerName} | Responshuvud | Ospecificerad | Ospecificerad rubrik {headerName} tillåts inte. | Det gick inte att bearbeta begäran på grund av ett internt fel. Kontakta API-ägaren. | identifiera/förhindra | 
| ApiSchema (på engelska) | API:ets schema finns inte eller så gick det inte att lösa det. | Det gick inte att bearbeta begäran på grund av ett internt fel. Kontakta API-ägaren. | identifiera/förhindra | ||
| ApiSchema (på engelska) | API-schemat anger inte definitioner. | Det gick inte att bearbeta begäran på grund av ett internt fel. Kontakta API-ägaren. | identifiera/förhindra | ||
| {paramName} | QueryParameter/PathParameter/RequestHeader/ResponseHeader | MissingDefinition | API:s schema innehåller inte definitionen {definitionName}, som är associerad med {frågeparametern/sökvägsparametern/header} {paramName}. | Det gick inte att bearbeta begäran på grund av ett internt fel. Kontakta API-ägaren. | identifiera/förhindra | 
| {paramName} | QueryParameter/PathParameter/RequestHeader | IncorrectMessage | Begäran får inte innehålla flera värden för {frågeparametern/sökvägsparametern /header} {paramName}. | Begäran får inte innehålla flera värden för {frågeparametern/sökvägsparametern /header} {paramName}. | identifiera/förhindra | 
| {headerName} | Responshuvud | IncorrectMessage | Svaret får inte innehålla flera värden för huvudet {headerName}. | Det gick inte att bearbeta begäran på grund av ett internt fel. Kontakta API-ägaren. | identifiera/förhindra | 
| {paramName} | QueryParameter/PathParameter/RequestHeader | IncorrectMessage | Värdet för {frågeparametern/sökvägsparametern/huvudet} {paramName} överensstämmer inte med definitionen. {valError.Message} Rad: {valError.LineNumber}, Position: {valError.LinePosition} | Värdet för {frågeparametern/sökvägsparametern /header} {paramName} överensstämmer inte med definitionen. {valError.Message} Rad: {valError.LineNumber}, Position: {valError.LinePosition} | identifiera/förhindra | 
| {headerName} | Responshuvud | IncorrectMessage | Värdet för rubriken {headerName} överensstämmer inte med definitionen. {valError.Message} Rad: {valError.LineNumber}, Position: {valError.LinePosition} | Det gick inte att bearbeta begäran på grund av ett internt fel. Kontakta API-ägaren. | identifiera/förhindra | 
| {paramName} | QueryParameter/PathParameter/RequestHeader | IncorrectMessage | Värdet för {frågeparametern/sökvägsparametern /header} {paramName} kan inte parsas enligt definitionen. {ex. Meddelande} | Värdet för {frågeparametern/sökvägsparametern/huvudet} {paramName} kunde inte parsas enligt definitionen. {ex. Meddelande} | identifiera/förhindra | 
| {headerName} | Responshuvud | IncorrectMessage | Det gick inte att parsa värdet för rubriken {headerName} enligt definitionen. | Det gick inte att bearbeta begäran på grund av ett internt fel. Kontakta API-ägaren. | identifiera/förhindra | 
| {paramName} | QueryParameter/PathParameter/RequestHeader | ValidationError | {Frågeparameter/Sökvägsparameter/Rubrik} Det går inte att verifiera {paramName}. {undantagsinformation} | Det gick inte att bearbeta begäran på grund av ett internt fel. Kontakta API-ägaren. | identifiera/förhindra | 
| {headerName} | Responshuvud | ValidationError | Det går inte att verifiera rubriken {headerName}. {undantagsinformation} | Det gick inte att bearbeta begäran på grund av ett internt fel. Kontakta API-ägaren. | identifiera/förhindra | 
| validate-status-code | |||||
| {statuskod} | Statuskod | Ospecificerad | Svarsstatuskoden {status-code} är inte tillåten. | Det gick inte att bearbeta begäran på grund av ett internt fel. Kontakta API-ägaren. | identifiera/förhindra | 
I följande tabell visas alla möjliga orsaksvärden för ett valideringsfel tillsammans med möjliga meddelandevärden:
| Anledning | Meddelande | 
|---|---|
| Felaktig begäran | {Details} för kontextvariabeln {Public response} för klienten | 
| Svar tillåts inte | {Details} för kontextvariabeln {Public response} för klienten | 
Relaterade principer
Relaterat innehåll
Mer information om hur du arbetar med principer finns i:
- Självstudie: Transformera och skydda ditt API
- Principreferens för en fullständig lista över principinstruktioner och deras inställningar
- Principuttryck
- Ange eller redigera principer
- Återanvända principkonfigurationer
- Lagringsplats för principfragment
- Lagringsplats för principlekplats
- Principverktyg för Azure API Management
- Få Hjälp med Copilot för att skapa, förklara och felsöka principer