Ověření hlaviček

PLATÍ PRO: Všechny úrovně služby API Management

Tato validate-headers zásada ověří hlavičky odpovědí vůči schématu rozhraní API.

Důležité

Pokud jste naimportovali rozhraní API s použitím verze rozhraní API pro správu před tím 2021-01-01-preview, validate-headers nemusí zásady fungovat. Možná budete muset rozhraní API znovu importovat pomocí verze 2021-01-01-preview rozhraní API pro správu nebo novější.

Poznámka:

Maximální velikost schématu rozhraní API, které lze použít touto zásadou ověřování, je 4 MB. Pokud schéma tento limit překročí, zásady ověřování vrátí chyby za běhu. Pokud ho chcete zvýšit, obraťte se na podporu.

Poznámka:

Nastavte prvky zásad a podřízené prvky v pořadí uvedeném v prohlášení o zásadách. Portál poskytuje průvodce editorem založeným na formulářích, který vám pomůže s konfigurací této zásady. Přečtěte si další informace o tom, jak nastavit nebo upravit zásady služby API Management.

Prohlášení o zásadách

<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>

Atributy

Atribut Popis Požaduje se Výchozí
specified-header-action Akce , která se má provést pro hlavičky odpovědi zadané ve schématu rozhraní API Výrazy zásad jsou povolené. Yes
nezadaná akce hlavičky Akce , která se má provést pro hlavičky odpovědí, které nejsou zadané ve schématu rozhraní API Výrazy zásad jsou povolené. Yes
errors-variable-name Název proměnné context.Variables , do které se protokoluje chyby ověření. Výrazy zásad nejsou povolené. No

Elementy

Název Popis Povinní účastníci
záhlaví Přidejte jeden nebo více prvků pro pojmenované hlavičky, které přepíší výchozí ověřovací akce pro hlavičky v odpovědích. No

Akce

Zásady ověřování obsahu zahrnují jeden nebo více atributů, které určují akci, kterou služba API Management provádí při ověřování entity v požadavku rozhraní API nebo odpovědi vůči schématu rozhraní API.

  • Pro elementy, které jsou reprezentované ve schématu rozhraní API, může být zadána akce a v závislosti na zásadách pro elementy, které nejsou reprezentovány ve schématu rozhraní API.

  • Akce zadaná v podřízené elementu zásady přepíše akci zadanou pro nadřazenou položku.

Dostupné akce:

Akce Popis
ignorovat Přeskočte ověření.
Zabránit Zablokujte zpracování požadavku nebo odpovědi, zakažte podrobnou chybu ověření a vraťte chybu. Zpracování se přeruší při zjištění první sady chyb.
zjistit Chyby ověření protokolu bez přerušení zpracování požadavků nebo odpovědí

Využití

Poznámky k využití

  • Tuto zásadu je možné v oddílu zásad použít jenom jednou.

Protokoly

Podrobnosti o chybách ověřování během provádění zásad jsou zaznamenány do proměnné zadané context.Variables v errors-variable-name atributu v kořenovém elementu zásady. Při konfiguraci v prevent akci blokuje chyba ověření další zpracování požadavku nebo odpovědi a je také rozšířena do context.LastError vlastnosti.

K prošetření chyb použijte zásadu trasování k protokolování chyb z kontextových proměnných do Přehledy aplikace.

Vliv na výkon

Přidání zásady ověření může mít vliv na propustnost rozhraní API. Platí následující obecné principy:

  • Čím větší je velikost schématu rozhraní API, tím nižší bude propustnost.
  • Čím větší je datová část v požadavku nebo odpovědi, tím nižší bude propustnost.
  • Velikost schématu rozhraní API má větší vliv na výkon než velikost datové části.
  • Ověření vůči schématu rozhraní API, které má velikost několika megabajtů, může způsobit vypršení časového limitu požadavků nebo odpovědí za určitých podmínek. Účinek je výraznější v úrovních Consumption a Developer služby.

Doporučujeme provádět zátěžové testy s očekávanými produkčními úlohami, abyste posoudili dopad zásad ověřování na propustnost rozhraní API.

Příklad

<validate-headers specified-header-action="ignore" unspecified-header-action="prevent" errors-variable-name="responseHeadersValidation" />

Chyby ověření

Služba API Management generuje chyby ověření obsahu v následujícím formátu:

{
 "Name": string,
 "Type": string,
 "ValidationRule": string,
 "Details": string,
 "Action": string
}

Následující tabulka uvádí všechny možné chyby zásad ověřování.

  • Podrobnosti: Je možné použít k prošetření chyb. Nemělo by se sdílet veřejně.
  • Veřejná odpověď: Chyba vrácená klientovi. Nedochází k úniku podrobností implementace.

Když zásada ověření určuje prevent akci a vygeneruje chybu, odpověď ze služby API Management obsahuje stavový kód HTTP: 400, když se zásada použije v příchozí části, a 502, když se zásada použije v odchozím oddílu.

Název Typ Ověřovací pravidlo Podrobnosti Veřejná odpověď Akce
validate-content
RequestBody SizeLimit Text požadavku je {size} bajtů dlouhý a překračuje nakonfigurovaný limit počtu bajtů {maxSize}. Text požadavku je {size} bajtů dlouhý a překračuje limit {maxSize} bajtů. detekce nebo prevence
ResponseBody SizeLimit Text odpovědi má délku {size} bajtů a překračuje nakonfigurovaný limit počtu bajtů {maxSize}. Požadavek nelze zpracovat kvůli vnitřní chybě. Obraťte se na vlastníka rozhraní API. detekce nebo prevence
{messageContentType} RequestBody Nespecifikované Zadaný typ obsahu {messageContentType} není povolený. Zadaný typ obsahu {messageContentType} není povolený. detekce nebo prevence
{messageContentType} ResponseBody Nespecifikované Zadaný typ obsahu {messageContentType} není povolený. Požadavek nelze zpracovat kvůli vnitřní chybě. Obraťte se na vlastníka rozhraní API. detekce nebo prevence
ApiSchema Schéma rozhraní API neexistuje nebo ho nelze přeložit. Požadavek nelze zpracovat kvůli vnitřní chybě. Obraťte se na vlastníka rozhraní API. detekce nebo prevence
ApiSchema Schéma rozhraní API nezadává definice. Požadavek nelze zpracovat kvůli vnitřní chybě. Obraťte se na vlastníka rozhraní API. detekce nebo prevence
{messageContentType} RequestBody / ResponseBody MissingDefinition Schéma rozhraní API neobsahuje definici {definitionName}, která je přidružena k typu obsahu {messageContentType}. Požadavek nelze zpracovat kvůli vnitřní chybě. Obraťte se na vlastníka rozhraní API. detekce nebo prevence
{messageContentType} RequestBody Nesprávná zpráva Text požadavku neodpovídá definici {definitionName}, která je přidružena k typu obsahu {messageContentType}.

Řádek {valError.Message}: {valError.LineNumber}, pozice: {valError.LinePosition}
Text požadavku neodpovídá definici {definitionName}, která je přidružena k typu obsahu {messageContentType}.

Řádek {valError.Message}: {valError.LineNumber}, pozice: {valError.LinePosition}
detekce nebo prevence
{messageContentType} ResponseBody Nesprávná zpráva Text odpovědi neodpovídá definici {definitionName}, která je přidružena k typu obsahu {messageContentType}.

Řádek {valError.Message}: {valError.LineNumber}, pozice: {valError.LinePosition}
Požadavek nelze zpracovat kvůli vnitřní chybě. Obraťte se na vlastníka rozhraní API. detekce nebo prevence
RequestBody ValidationException Text požadavku nelze ověřit pro typ obsahu {messageContentType}.

{podrobnosti o výjimce}
Požadavek nelze zpracovat kvůli vnitřní chybě. Obraťte se na vlastníka rozhraní API. detekce nebo prevence
ResponseBody ValidationException Text odpovědi nelze ověřit pro typ obsahu {messageContentType}.

{podrobnosti o výjimce}
Požadavek nelze zpracovat kvůli vnitřní chybě. Obraťte se na vlastníka rozhraní API. detekce nebo prevence
validate-parameters / validate-headers
{paramName} / {headerName} QueryParameter / PathParameter / RequestHeader Nespecifikované Zadaný parametr {path / parametr dotazu / header} {paramName} není povolený. Zadaný parametr {path / parametr dotazu / header} {paramName} není povolený. detekce nebo prevence
{headerName} ResponseHeader Nespecifikované Nezadaná hlavička {headerName} není povolená. Požadavek nelze zpracovat kvůli vnitřní chybě. Obraťte se na vlastníka rozhraní API. detekce nebo prevence
ApiSchema Schéma rozhraní API neexistuje nebo ho nelze přeložit. Požadavek nelze zpracovat kvůli vnitřní chybě. Obraťte se na vlastníka rozhraní API. detekce nebo prevence
ApiSchema Schéma rozhraní API nezadává definice. Požadavek nelze zpracovat kvůli vnitřní chybě. Obraťte se na vlastníka rozhraní API. detekce nebo prevence
{paramName} QueryParameter / PathParameter / RequestHeader / ResponseHeader MissingDefinition Schéma rozhraní API neobsahuje definici {definitionName}, která je přidružená k {parametru dotazu / parametru cesty / header} {paramName}. Požadavek nelze zpracovat kvůli vnitřní chybě. Obraťte se na vlastníka rozhraní API. detekce nebo prevence
{paramName} QueryParameter / PathParameter / RequestHeader Nesprávná zpráva Požadavek nemůže obsahovat více hodnot pro {parametr dotazu / parametr cesty / header} {paramName}. Požadavek nemůže obsahovat více hodnot pro {parametr dotazu / parametr cesty / header} {paramName}. detekce nebo prevence
{headerName} ResponseHeader Nesprávná zpráva Odpověď nemůže obsahovat více hodnot hlavičky {headerName}. Požadavek nelze zpracovat kvůli vnitřní chybě. Obraťte se na vlastníka rozhraní API. detekce nebo prevence
{paramName} QueryParameter / PathParameter / RequestHeader Nesprávná zpráva Hodnota parametru dotazu / parametru cesty / header} {paramName} neodpovídá definici.

Řádek {valError.Message}: {valError.LineNumber}, pozice: {valError.LinePosition}
Hodnota parametru dotazu / parametru cesty / header} {paramName} neodpovídá definici.

Řádek {valError.Message}: {valError.LineNumber}, pozice: {valError.LinePosition}
detekce nebo prevence
{headerName} ResponseHeader Nesprávná zpráva Hodnota hlavičky {headerName} neodpovídá definici.

Řádek {valError.Message}: {valError.LineNumber}, pozice: {valError.LinePosition}
Požadavek nelze zpracovat kvůli vnitřní chybě. Obraťte se na vlastníka rozhraní API. detekce nebo prevence
{paramName} QueryParameter / PathParameter / RequestHeader Nesprávná zpráva Hodnotu parametru dotazu / parametru cesty / header} {paramName} nelze analyzovat podle definice.

{ex. Zpráva}
Hodnotu parametru dotazu / parametru cesty / header} {paramName} nelze analyzovat podle definice.

{ex. Zpráva}
detekce nebo prevence
{headerName} ResponseHeader Nesprávná zpráva Hodnotu hlavičky {headerName} nelze analyzovat podle definice. Požadavek nelze zpracovat kvůli vnitřní chybě. Obraťte se na vlastníka rozhraní API. detekce nebo prevence
{paramName} QueryParameter / PathParameter / RequestHeader Validationerror {Parametr dotazu / Parametr cesty / Header} {paramName} nelze ověřit.

{podrobnosti o výjimce}
Požadavek nelze zpracovat kvůli vnitřní chybě. Obraťte se na vlastníka rozhraní API. detekce nebo prevence
{headerName} ResponseHeader Validationerror Hlavičku {headerName} nelze ověřit.

{podrobnosti o výjimce}
Požadavek nelze zpracovat kvůli vnitřní chybě. Obraťte se na vlastníka rozhraní API. detekce nebo prevence
validate-status-code
{status-code} StatusCode Nespecifikované Stavový kód odpovědi {status-code} není povolen. Požadavek nelze zpracovat kvůli vnitřní chybě. Obraťte se na vlastníka rozhraní API. detekce nebo prevence

V následující tabulce jsou uvedeny všechny možné hodnoty důvodu chyby ověření spolu s možnými hodnotami zpráv:

Důvod Zpráva
Chybný požadavek {Details} pro kontextovou proměnnou, {Public response} pro klienta
Odpověď není povolena. {Details} pro kontextovou proměnnou, {Public response} pro klienta

Další informace o práci se zásadami najdete v tématech: