CORS
GÄLLER FÖR: Alla API Management-nivåer
Principen cors
lägger till cors-stöd (cross-origin resource sharing) till en åtgärd eller ett API för att tillåta korsdomänanrop från webbläsarbaserade klienter.
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
<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>
Attribut
Namn | beskrivning | Obligatoriskt | Standardvärde |
---|---|---|---|
allow-credentials | Huvudet Access-Control-Allow-Credentials i preflight-svaret anges till värdet för det här attributet och påverkar klientens möjlighet att skicka autentiseringsuppgifter i begäranden mellan domäner. Principuttryck tillåts. |
Nej | false |
terminate-unmatched-request | Styr bearbetningen av begäranden mellan ursprung som inte matchar principinställningarna. Principuttryck tillåts. När OPTIONS begäran bearbetas som en förhandsbegäran och Origin huvudet inte matchar principinställningarna:– Om attributet är inställt på true avslutar du omedelbart begäran med ett tomt 200 OK svar– Om attributet är inställt på false kontrollerar du inkommande för andra principer inom omfånget cors som är direkt underordnade till det inkommande elementet och tillämpar dem. Om inga cors principer hittas avslutar du begäran med ett tomt 200 OK svar. När GET eller HEAD begäran innehåller Origin huvudet (och därför bearbetas som en enkel begäran om korsande ursprung) och inte matchar principinställningarna:– Om attributet är inställt på true avslutar du omedelbart begäran med ett tomt 200 OK svar.– Om attributet är inställt på false tillåter du att begäran fortsätter normalt och lägger inte till CORS-huvuden i svaret. |
Nej | true |
Element
Name | beskrivning | Obligatoriskt | Standardvärde |
---|---|---|---|
allowed-origins | Innehåller origin element som beskriver det tillåtna ursprunget för begäranden mellan domäner. allowed-origins kan innehålla antingen ett enda origin element som anger att ett ursprung ska tillåtas * , eller ett eller flera origin element som innehåller en URI. |
Ja | Ej tillämpligt |
allowed-methods | Det här elementet krävs om andra metoder än GET eller POST tillåts. Innehåller method element som anger vilka HTTP-verb som stöds. Värdet * anger alla metoder. |
Nej | Om det här avsnittet inte finns GET och POST stöds. |
allowed-headers | Det här elementet innehåller header element som anger namnen på de rubriker som kan ingå i begäran. |
Ja | Ej tillämpligt |
expose-headers | Det här elementet innehåller header element som anger namnen på de rubriker som ska vara tillgängliga för klienten. |
Nej | Ej tillämpligt |
Varning
Använd jokertecknet *
med försiktighet i principinställningarna. Den här konfigurationen kan vara alltför tillåtande och kan göra ett API mer sårbart för vissa API-säkerhetshot.
element med tillåtet ursprung
Name | beskrivning | Obligatoriskt | Standardvärde |
---|---|---|---|
ursprung | Värdet kan antingen * vara att tillåta alla ursprung eller en URI som anger ett enda ursprung. URI:n måste innehålla ett schema, en värd och en port. Inkludera inte citattecken. |
Ja | Om porten utelämnas i en URI används port 80 för HTTP och port 443 används för HTTPS. |
attribut för allowed-methods
Name | beskrivning | Obligatoriskt | Standardvärde |
---|---|---|---|
preflight-result-max-age | Huvudet Access-Control-Max-Age i preflight-svaret anges till värdet för det här attributet och påverkar användaragentens möjlighet att cachelagras preflight-svaret. Principuttryck tillåts. |
Nej | 0 |
element med tillåtna metoder
Name | beskrivning | Obligatoriskt | Standardvärde |
---|---|---|---|
metod | Anger ett HTTP-verb. Principuttryck tillåts. | Minst ett method element krävs om avsnittet allowed-methods finns. |
Ej tillämpligt |
element för allowed-headers
Name | beskrivning | Obligatoriskt | Standardvärde |
---|---|---|---|
sidhuvud | Anger ett rubriknamn. | Minst ett header element krävs i allowed-headers om det avsnittet finns. |
Ej tillämpligt |
expose-headers-element
Name | beskrivning | Obligatoriskt | Standardvärde |
---|---|---|---|
sidhuvud | Anger ett rubriknamn. | Minst ett header element krävs i expose-headers om det avsnittet finns. |
Ej tillämpligt |
Användning
- Principavsnitt: inkommande
- Principomfattningar: global, arbetsyta, produkt, API, åtgärd
- Gatewayer: klassisk, v2, förbrukning, lokalt installerad, arbetsyta
Användningsanteckningar
- Du kan konfigurera
cors
principen i mer än ett omfång (till exempel i produktomfånget och det globala omfånget). Kontrollera att elementetbase
har konfigurerats vid åtgärden, API:et och produktomfattningarna för att ärva nödvändiga principer i de överordnade omfången. cors
Endast principen utvärderas påOPTIONS
begäran under preflight. Återstående konfigurerade principer utvärderas på den godkända begäran.
- Den här principen kan bara användas en gång i ett principavsnitt.
Om CORS
CORS är en HTTP-huvudbaserad standard som gör att en webbläsare och en server kan interagera och avgöra om specifika begäranden mellan ursprung ska tillåtas (XMLHttpRequest
anrop som görs från JavaScript på en webbsida till andra domäner). Detta ger större flexibilitet än att bara tillåta begäranden med samma ursprung, men är säkrare än att tillåta alla begäranden mellan ursprung.
CORS anger två typer av begäranden mellan ursprung:
Förinställda (eller "preflight") begäranden – Webbläsaren skickar först en HTTP-begäran med hjälp av
OPTIONS
metoden till servern för att avgöra om den faktiska begäran tillåts skicka. Om serversvaret innehåller huvudetAccess-Control-Allow-Origin
som tillåter åtkomst följer webbläsaren med den faktiska begäran.Enkla begäranden – Dessa begäranden innehåller en eller flera extra
Origin
huvuden men utlöser inte en CORS-preflight. Endast begäranden med metodernaGET
ochHEAD
och en begränsad uppsättning begärandehuvuden tillåts.
cors
principscenarier
cors
Konfigurera principen i API Management för följande scenarier:
Aktivera den interaktiva testkonsolen i utvecklarportalen. Mer information finns i dokumentationen för utvecklarportalen.
Kommentar
När du aktiverar CORS för den interaktiva konsolen konfigurerar
cors
API Management som standard principen i det globala omfånget.Aktivera API Management för att svara på förinställda begäranden eller skicka enkla CORS-begäranden när serverdelarna inte tillhandahåller sitt eget CORS-stöd.
Kommentar
Om en begäran matchar en åtgärd med en
OPTIONS
metod som definierats i API:et, körs inte logikencors
för bearbetning av preflight-begäranden som är associerad med principen. Därför kan sådana åtgärder användas för att implementera anpassad preflight-bearbetningslogik – till exempel för att endast tillämpacors
principen under vissa villkor.
Vanliga konfigurationsproblem
- Prenumerationsnyckel i huvudet – Om du konfigurerar
cors
principen i produktomfånget och ditt API använder prenumerationsnyckelautentisering fungerar inte principen när prenumerationsnyckeln skickas i ett huvud. Som en lösning kan du ändra begäranden så att de inkluderar en prenumerationsnyckel som en frågeparameter. - API med versionshantering av huvuden – Om du konfigurerar
cors
principen i API-omfånget och ditt API använder ett schema för versionshantering av huvuden fungerar inte principen eftersom versionen skickas i ett huvud. Du kan behöva konfigurera en alternativ metod för versionshantering, till exempel en sökväg eller frågeparameter. - Principordning – Du kan uppleva oväntat beteende om
cors
principen inte är den första principen i det inkommande avsnittet. Välj Beräkna effektiv princip i principredigeraren för att kontrollera principutvärderingsordningen i varje omfång. I allmänhet tillämpas endast den förstacors
principen. - Tomt 200 OK-svar – I vissa principkonfigurationer slutförs vissa begäranden mellan ursprung med ett tomt
200 OK
svar. Det här svaret förväntas närterminate-unmatched-request
är inställt på standardvärdettrue
för och en inkommande begäran har ettOrigin
huvud som inte matchar ett tillåtet ursprung som konfigurerats icors
principen.
Exempel
Det här exemplet visar hur du stöder preflight-begäranden, till exempel sådana med anpassade rubriker eller andra metoder än GET
och POST
. Använd avsnitten allowed-methods
och allowed-headers
som visas i följande exempel för att stödja anpassade rubriker och andra HTTP-verb.
<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>
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
- Skapa principer med Microsoft Copilot i Azure