Korsdomänprinciper för API Management

Det här avsnittet innehåller en referens för följande API Management principer. Information om hur du lägger till och konfigurerar principer finns i Principer i API Management.

Principer mellan domäner

  • Tillåt anrop mellan domäner – Gör API:et tillgängligt från Adobe Flash- och Microsoft Silverlight-webbläsarbaserade klienter.
  • CORS – lägger till CORS-stöd (Cross-Origin Resource Sharing) för en åtgärd eller ett API för att tillåta anrop mellan domäner från webbläsarbaserade klienter.
  • JSONP – Lägger till stöd för JSON med utfyllnad (JSONP) till en åtgärd eller ett API för att tillåta anrop mellan domäner från JavaScript-webbläsarbaserade klienter.

Tillåt anrop mellan domäner

Använd principen cross-domain för att göra API:et tillgängligt från Adobe Flash- och Microsoft Silverlight-webbläsarbaserade klienter.

Principutdrag

<cross-domain>
    <!-Policy configuration is in the Adobe cross-domain policy file format,
        see https://www.adobe.com/devnet-docs/acrobatetk/tools/AppSec/CrossDomain_PolicyFile_Specification.pdf-->
</cross-domain>

Exempel

<cross-domain>
        <allow-http-request-headers-from domain='*' headers='*' />
</cross-domain>

Element

Namn Beskrivning Krävs
mellan domäner Rotelementet. Underordnade element måste följa specifikationen för Adobe-principfilen över flera domäner. Yes

Användning

Den här principen kan användas i följande principavsnitt och omfång.

  • Principavsnitt: inkommande
  • Principomfång: alla omfång

CORS

Principen cors lägger till CORS-stöd (Cross-Origin Resource Sharing) för en åtgärd eller ett API för att tillåta anrop mellan domäner från webbläsarbaserade klienter.

Anteckning

Om begäran matchar en åtgärd med en OPTIONS-metod som definierats i API:et körs inte bearbetningslogiken före flygresan som är associerad med CORS-principer. Därför kan sådana åtgärder användas för att implementera anpassad bearbetningslogik före flygresan.

CORS gör att en webbläsare och en server kan interagera och avgöra om specifika begäranden om korsande ursprung ska tillåtas (d.v.s. XMLHttpRequests-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 om samma ursprung, men är säkrare än att tillåta alla begäranden om korsande ursprung.

Du måste tillämpa CORS-principen för att aktivera den interaktiva konsolen i utvecklarportalen. Mer information finns i dokumentationen för utvecklarportalen.

Principutdrag

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

Exempel

Det här exemplet visar hur du stöder begäranden före flygning,till exempel med anpassade huvuden eller metoder som inte är GET och POST. Om du vill ha stöd för anpassade huvuden och ytterligare HTTP-verb använder du allowed-methods allowed-headers avsnitten och som visas i följande exempel.

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

Element

Namn Beskrivning Krävs Standardvärde
cors Rotelementet. Yes Ej tillämpligt
tillåtna ursprung Innehåller origin element som beskriver tillåtna ursprung för begäranden mellan domäner. allowed-origins kan innehålla antingen ett origin enda element som anger att alla ursprung ska * tillåtas, eller ett eller flera origin element som innehåller en URI. Yes Ej tillämpligt
ursprung Värdet kan vara * antingen för att tillåta alla ursprung eller en URI som anger ett enda ursprung. URI:en måste innehålla ett schema, en värd och en port. Yes Om porten utelämnas i en URI används port 80 för HTTP och port 443 används för HTTPS.
allowed-methods Det här elementet krävs om andra metoder än GET eller POST tillåts. Innehåller method element som anger de HTTP-verb som stöds. Värdet anger * alla metoder. No Om det här avsnittet inte finns stöds GET och POST.
metod Anger ett HTTP-verb. Minst ett method element krävs om avsnittet allowed-methods finns. Ej tillämpligt
allowed-headers Det här elementet header innehåller element som anger namn på de huvuden som kan ingå i begäran. No Ej tillämpligt
exponera huvuden Det här elementet header innehåller element som anger namn på de huvuden som ska vara tillgängliga för klienten. No Saknas
sidhuvud Anger ett huvudnamn. Minst ett header element krävs i eller om avsnittet allowed-headers expose-headers finns. Ej tillämpligt

Attribut

Name Beskrivning Krävs Standardvärde
tillåt autentiseringsuppgifter Huvudet i det första svaret ställs in på värdet för det här attributet och påverkar klientens möjlighet att skicka Access-Control-Allow-Credentials autentiseringsuppgifter i begäranden mellan domäner. No falskt
terminate-unmatched-request Det här attributet styr bearbetningen av begäranden om korsande ursprung som inte matchar CORS-principinställningarna. När OPTIONS-begäran bearbetas som en begäran före flygresan och inte matchar CORS-principinställningarna: Om attributet är inställt på avslutar du begäran omedelbart med ett tomt true 200 OK-svar. Om attributet är inställt på kontrollerar du om det finns andra CORS-principer inom omfång som är direkt underordnade till false 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 ursprungshuvudet (och därför bearbetas som en begäran om korsande ursprung) och inte matchar CORS-principinställningarna: Om attributet är inställt på avslutar du omedelbart begäran med ett tomt true 200 OK-svar. Om attributet är inställt på tillåter du att begäran fortsätter normalt false och inte lägger till CORS-huvuden i svaret. No true
preflight-result-max-age Huvudet i det första svaret ställs in på värdet för det här attributet och påverkar användaragentens möjlighet att cachelagra svar Access-Control-Max-Age före flygning. No 0

Användning

Den här principen kan användas i följande principavsnitt och omfång.

  • Principavsnitt: inkommande
  • Principomfång: alla omfång

JSONP

Principen lägger till stöd för JSON med utfyllnad (JSONP) till en åtgärd eller ett API för att tillåta anrop mellan domäner från jsonp JavaScript-webbläsarbaserade klienter. JSONP är en metod som används i JavaScript-program för att begära data från en server i en annan domän. JSONP kringgår den begränsning som tillämpas av de flesta webbläsare där åtkomsten till webbsidor måste finnas i samma domän.

Principsats

<jsonp callback-parameter-name="callback function name" />

Exempel

<jsonp callback-parameter-name="cb" />

Om du anropar metoden utan motringningsparametern ?cb=XXX returneras Oformaterad JSON (utan funktionsanropsomslutare).

Om du lägger till motringningsparametern returneras ett JSONP-resultat som omsluter de ursprungliga ?cb=XXX JSON-resultaten runt återanropsfunktionen som XYZ('<json result goes here>');

Element

Namn Beskrivning Krävs
Jsonp Rotelementet. Yes

Attribut

Name Beskrivning Krävs Standardvärde
callback-parameter-name JavaScript-funktionsanropet över flera domäner föregås av det fullständigt kvalificerade domännamnet där funktionen finns. Yes Ej tillämpligt

Användning

Den här principen kan användas i följande principavsnitt och omfång.

  • Principavsnitt: utgående
  • Principomfång: alla omfång

Nästa steg

Mer information om hur du arbetar med principer finns i: