CORS
PLATÍ PRO: Všechny úrovně služby API Management
Zásada cors
přidává podporu sdílení prostředků mezi zdroji (CORS) k operaci nebo rozhraní API, aby bylo možné volat mezi doménami z klientů založených na prohlížeči.
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
<cors allow-credentials="false | true" terminate-unmatched-request="true | false">
<allowed-origins>
<origin>origin uri</origin>
</allowed-origins>
<allowed-methods preflight-result-max-age="number of seconds">
<method>HTTP verb</method>
</allowed-methods>
<allowed-headers>
<header>header name</header>
</allowed-headers>
<expose-headers>
<header>header name</header>
</expose-headers>
</cors>
Atributy
Jméno | Popis | Požaduje se | Výchozí |
---|---|---|---|
allow-credentials | Hlavička Access-Control-Allow-Credentials v předběžné odpovědi se nastaví na hodnotu tohoto atributu a ovlivní schopnost klienta odesílat přihlašovací údaje v požadavcích mezi doménou. Výrazy zásad jsou povolené. |
No | false |
terminate-unmatched-request | Řídí zpracování požadavků mezi zdroji, které neodpovídají nastavení zásad. Výrazy zásad jsou povolené. Když OPTIONS se požadavek zpracuje jako předběžný požadavek a Origin hlavička neodpovídá nastavení zásad:- Pokud je atribut nastaven na true , okamžitě ukončete požadavek prázdnou 200 OK odpovědí.– Pokud je atribut nastaven na false , zkontrolujte příchozí u jiných zásad v oboru cors , které jsou přímé podřízené položky příchozího elementu, a použijte je. Pokud nejsou nalezeny žádné cors zásady, ukončete žádost prázdnou 200 OK odpovědí. Pokud GET nebo HEAD požadavek obsahuje hlavičku Origin (a proto se zpracuje jako jednoduchý požadavek mezi zdroji) a neodpovídá nastavení zásad:- Pokud je atribut nastaven na true , okamžitě ukončete požadavek prázdnou 200 OK odpovědí.– Pokud je atribut nastavený na false , povolte požadavku normální pokračování a nepřidávejte do odpovědi hlavičky CORS. |
No | true |
Elementy
Název | Popis | Požaduje se | Výchozí |
---|---|---|---|
povolené zdroje | Obsahuje origin prvky, které popisují povolené zdroje pro požadavky mezi doménami. allowed-origins může obsahovat jeden origin prvek, který určuje * , že má povolit jakýkoli původ, nebo jeden nebo více origin prvků, které obsahují identifikátor URI. |
Yes | – |
allowed-methods | Tento prvek je povinný, pokud jsou povoleny jiné GET metody nebo POST jsou povoleny. Obsahuje method prvky, které určují podporované příkazy HTTP. Hodnota * označuje všechny metody. |
No | Pokud tento oddíl není k dispozici GET a POST podporuje se. |
allowed-headers | Tento element obsahuje header prvky určující názvy hlaviček, které lze zahrnout do požadavku. |
Yes | – |
expose-headers | Tento element obsahuje header prvky určující názvy hlaviček, které budou přístupné klientem. |
No | – |
Upozornění
*
V nastavení zásad používejte zástupný znak s opatrností. Tato konfigurace může být příliš přesvědčivá a může být rozhraní API zranitelnější vůči určitým hrozbám zabezpečení rozhraní API.
prvky s povolenými zdroji
Název | Popis | Požaduje se | Výchozí |
---|---|---|---|
origin (zdroj) | Hodnota může být buď * povolení všech zdrojů, nebo identifikátor URI, který určuje jeden zdroj. Identifikátor URI musí obsahovat schéma, hostitele a port. Nezadávejte uvozovky. |
Ano | Pokud je port vynechán v identifikátoru URI, použije se port 80 pro PROTOKOL HTTP a port 443 se používá pro HTTPS. |
atributy allowed-methods
Název | Popis | Požaduje se | Výchozí |
---|---|---|---|
preflight-result-max-age | Hlavička Access-Control-Max-Age v předběžné odpovědi se nastaví na hodnotu tohoto atributu a ovlivní schopnost uživatelského agenta ukládat předběžnou odpověď do mezipaměti. Výrazy zásad jsou povolené. |
No | 0 |
povolené elementy metod
Název | Popis | Požaduje se | Výchozí |
---|---|---|---|
metoda | Určuje příkaz HTTP. Výrazy zásad jsou povolené. | Nejméně jeden method prvek je vyžadován, pokud allowed-methods je oddíl k dispozici. |
– |
povolené elementy záhlaví
Název | Popis | Požaduje se | Výchozí |
---|---|---|---|
záhlaví | Určuje název záhlaví. | Nejméně jeden header prvek je vyžadován v allowed-headers případě, že je tento oddíl k dispozici. |
– |
prvky zpřístupňované hlavičky
Název | Popis | Požaduje se | Výchozí |
---|---|---|---|
záhlaví | Určuje název záhlaví. | Nejméně jeden header prvek je vyžadován v expose-headers případě, že je tento oddíl k dispozici. |
– |
Využití
- Oddíly zásad: příchozí
- Obory zásad: globální, pracovní prostor, produkt, rozhraní API, operace
- Brány: Classic, v2, consumption, self-host, workspace
Poznámky k využití
- Zásady můžete nakonfigurovat
cors
ve více než jednom oboru (například v oboru produktu a globálním rozsahu). Ujistěte se, žebase
je element nakonfigurovaný v rozsahech operací, rozhraní API a produktů tak, aby dědil potřebné zásady v nadřazených oborech. cors
Během předběžného letu se vyhodnocujíOPTIONS
pouze zásady na požadavku. Zbývající nakonfigurované zásady se vyhodnocují na schválené žádosti.
- Tuto zásadu je možné v oddílu zásad použít jenom jednou.
Informace o CORS
CORS je standard založený na hlavičce HTTP, který umožňuje prohlížeči a serveru interagovat a určit, jestli mají povolit konkrétní požadavky mezi zdroji (XMLHttpRequest
volání z JavaScriptu na webové stránce do jiných domén). To umožňuje větší flexibilitu než povolení pouze požadavků stejného zdroje, ale je bezpečnější než povolení všech požadavků mezi zdroji.
CORS určuje dva typy požadavků mezi zdroji:
Předběžné (nebo předběžné) požadavky – prohlížeč nejprve odešle požadavek HTTP pomocí
OPTIONS
metody na server, aby zjistil, jestli je skutečný požadavek povolený k odeslání. Pokud odpověď serveru obsahuje hlavičkuAccess-Control-Allow-Origin
, která umožňuje přístup, prohlížeč následuje se skutečným požadavkem.Jednoduché požadavky – Tyto požadavky zahrnují jednu nebo více hlaviček navíc
Origin
, ale neaktivují předběžný výstup CORS. Jsou povoleny pouze požadavky používající metodyGET
aHEAD
omezenou sadu hlaviček požadavků.
cors
scénáře zásad
Nakonfigurujte zásady ve službě cors
API Management pro následující scénáře:
Na portálu pro vývojáře povolte interaktivní testovací konzolu. Podrobnosti najdete v dokumentaci k portálu pro vývojáře .
Poznámka:
Když povolíte CORS pro interaktivní konzolu, služba API Management ve výchozím nastavení nakonfiguruje
cors
zásady v globálním oboru.Povolte API Management odpovídat na předběžné požadavky nebo předávat jednoduché žádosti CORS, když back-endy neposkytují vlastní podporu CORS.
Poznámka:
Pokud požadavek odpovídá operaci s metodou definovanou
OPTIONS
v rozhraní API, logika předběžného zpracování požadavků přidružená kcors
zásadě se nespustí. Tyto operace se proto dají použít k implementaci vlastní logiky předběžnéhocors
zpracování – například k použití zásad pouze za určitých podmínek.
Běžné problémy s konfigurací
- Klíč předplatného v hlavičce – Pokud zásadu
cors
nakonfigurujete v oboru produktu a vaše rozhraní API používá ověřování pomocí klíče předplatného, zásady nebudou fungovat, když se klíč předplatného předá v hlavičce. Alternativním řešením je upravit požadavky tak, aby jako parametr dotazu obsahovaly klíč předplatného. - Rozhraní API s správou verzí hlaviček – Pokud nakonfigurujete zásadu
cors
v oboru rozhraní API a vaše rozhraní API používá schéma správy verzí hlaviček, zásady nebudou fungovat, protože verze se předává v hlavičce. Možná budete muset nakonfigurovat alternativní metodu správy verzí, jako je cesta nebo parametr dotazu. - Pořadí zásad – V případě,
cors
že zásady nejsou první zásadou v příchozí části, může docházet k neočekávanému chování. Výběrem možnosti Vypočítat efektivní zásady v editoru zásad zkontrolujte pořadí vyhodnocení zásad v jednotlivých oborech. Obecně platí, že se použijí pouze prvnícors
zásady. - Prázdná odpověď 200 OK – v některých konfiguracích zásad se některé požadavky mezi zdroji dokončí s prázdnou
200 OK
odpovědí. Tato odpověď se očekává, kdyžterminate-unmatched-request
je nastavená výchozí hodnotatrue
a příchozí požadavek má hlavičkuOrigin
, která neodpovídá povolenému zdroji nakonfigurovaným v zásadáchcors
.
Příklad
Tento příklad ukazuje, jak podporovat předběžné požadavky, například ty, které mají vlastní hlavičky nebo jiné metody než GET
a POST
. Pokud chcete podporovat vlastní hlavičky a další příkazy HTTP, použijte allowed-methods
oddíly a allowed-headers
oddíly, jak je znázorněno v následujícím příkladu.
<cors allow-credentials="true">
<allowed-origins>
<!-- Localhost useful for development -->
<origin>http://localhost:8080/</origin>
<origin>http://example.com/</origin>
</allowed-origins>
<allowed-methods preflight-result-max-age="300">
<method>GET</method>
<method>POST</method>
<method>PATCH</method>
<method>DELETE</method>
</allowed-methods>
<allowed-headers>
<!-- Examples below show Azure Mobile Services headers -->
<header>x-zumo-installation-id</header>
<header>x-zumo-application</header>
<header>x-zumo-version</header>
<header>x-zumo-auth</header>
<header>content-type</header>
<header>accept</header>
</allowed-headers>
<expose-headers>
<!-- Examples below show Azure Mobile Services headers -->
<header>x-zumo-installation-id</header>
<header>x-zumo-application</header>
</expose-headers>
</cors>
Související zásady
Související obsah
Další informace o práci se zásadami najdete v tématech:
- Kurz: Transformace a ochrana rozhraní API
- Referenční informace o zásadách pro úplný seznam prohlášení o zásadách a jejich nastavení
- Výrazy zásad
- Nastavení nebo úprava zásad
- Opakované použití konfigurací zásad
- Úložiště fragmentů zásad
- Sada nástrojů zásad služby Azure API Management
- Vytváření zásad pomocí Microsoft Copilotu v Azure