API Management-beleid voor meerdere domeinen

Dit onderwerp bevat een naslag voor de volgende API Management beleidsregels. Zie Beleidsregels in API Management voor meer informatie over het toevoegen en configureren API Management.

Beleid voor meerdere domeinen

  • Aanroepen tussen domeinen toestaan: maakt de API toegankelijk via Adobe Flash- en Microsoft Silverlight-browsergebaseerde clients.
  • CORS: voegt CORS-ondersteuning (Cross-Origin Resource Sharing) toe aan een bewerking of API om aanroepen tussen domeinen van browsergebaseerde clients toe te staan.
  • JSONP: voegt ondersteuning voor JSON met opvulling (JSONP) toe aan een bewerking of api om aanroepen tussen domeinen toe te staan vanuit clients in de JavaScript-browser.

Aanroepen tussen domeinen toestaan

Gebruik het cross-domain beleid om de API toegankelijk te maken vanuit Adobe Flash- en Microsoft Silverlight-browser-clients.

Beleidsverklaring

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

Voorbeeld

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

Elementen

Naam Beschrijving Vereist
meerdere domeinen Hoofdelement. Onderliggende elementen moeten voldoen aan de bestandsspecificatie van het Adobe-beleid voor meerdere domeinen. Yes

Gebruik

Dit beleid kan worden gebruikt in de volgende beleidssecties en -scopes.

  • Beleidssecties: inkomende
  • Beleidsbereiken: alle scopes

CORS

Het cors beleid voegt ONDERSTEUNING voor cross-origin-resource delen (CORS) toe aan een bewerking of een API om aanroepen tussen domeinen toe te staan vanaf browsergebaseerde clients.

Notitie

Als de aanvraag overeenkomt met een bewerking met een OPTIONS-methode die is gedefinieerd in de API, wordt de verwerkingslogica van de aanvraag die vooraf is gekoppeld aan CORS-beleid, niet uitgevoerd. Dergelijke bewerkingen kunnen daarom worden gebruikt voor het implementeren van aangepaste verwerkingslogica vóór de vlucht.

Met CORS kunnen een browser en een server communiceren en bepalen of specifieke cross-origin-aanvragen (dat wil zeggen XMLHttpRequests-aanroepen van JavaScript op een webpagina naar andere domeinen) zijn toegestaan. Dit biedt meer flexibiliteit dan alleen het toestaan van aanvragen van dezelfde oorsprong, maar is veiliger dan het toestaan van alle cross-origin-aanvragen.

U moet het CORS-beleid toepassen om de interactieve console in te kunnenschakelen in de ontwikkelaarsportal. Raadpleeg de documentatie voor de ontwikkelaarsportal voor meer informatie.

Beleidsverklaring

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

Voorbeeld

In dit voorbeeld wordt gedemonstreerd hoe u aanvragen vóór de vluchtkunt ondersteunen, zoals aanvragen met aangepaste headers of andere methoden dan GET en POST. Als u aangepaste headers en aanvullende HTTP-woorden wilt ondersteunen, gebruikt u de allowed-methods secties en allowed-headers zoals wordt weergegeven in het volgende voorbeeld.

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

Elementen

Naam Beschrijving Vereist Standaard
cors Hoofdelement. Yes N.v.t.
toegestane oorsprongen Bevat origin elementen die de toegestane oorsprongen voor aanvragen voor meerdere domeinen beschrijven. allowed-origins kan één element bevatten dat aangeeft dat elke oorsprong is toegestaan, of een of meer origin * elementen die een origin URI bevatten. Yes N.v.t.
origin De waarde kan zijn om alle oorsprongen toe te staan, of een * URI die één oorsprong specificeert. De URI moet een schema, host en poort bevatten. Yes Als de poort wordt weggelaten in een URI, wordt poort 80 gebruikt voor HTTP en poort 443 voor HTTPS.
allowed-methods Dit element is vereist als andere methoden dan GET of POST zijn toegestaan. Bevat method elementen die de ondersteunde HTTP-woorden opgeven. De waarde * geeft alle methoden aan. No Als deze sectie niet aanwezig is, worden GET en POST ondersteund.
method Hiermee geeft u een HTTP-woord. Er is ten method minste één element vereist als de sectie aanwezig allowed-methods is. N.v.t.
allowed-headers Dit element bevat header elementen die namen opgeven van de headers die in de aanvraag kunnen worden opgenomen. No N.v.t.
expose-headers Dit element bevat header elementen die namen opgeven van de headers die toegankelijk zijn voor de client. No N.v.t.
koptekst Hiermee geeft u een headernaam. Er is ten header minste één element vereist in of als de sectie aanwezig allowed-headers expose-headers is. N.v.t.

Kenmerken

Naam Beschrijving Vereist Standaard
allow-credentials De Access-Control-Allow-Credentials header in het preflight-antwoord wordt ingesteld op de waarde van dit kenmerk en heeft invloed op de mogelijkheid van de client om referenties in te dienen in aanvragen voor meerdere domeinen. No onjuist
terminate-unmatched-request Dit kenmerk bepaalt de verwerking van cross-origin-aanvragen die niet overeenkomen met de CORS-beleidsinstellingen. Wanneer de OPTIONS-aanvraag wordt verwerkt als een aanvraag vóór de vlucht en niet overeen komt met cors-beleidsinstellingen: als het kenmerk is ingesteld op , wordt de aanvraag onmiddellijk beëindigd met een leeg true 200 OK-antwoord; Als het kenmerk is ingesteld op , controleert u inkomende op andere CORS-beleidsregels binnen het bereik die directe kinderen van het inkomende element zijn en false passen ze toe. Als er geen CORS-beleid wordt gevonden, beëindigt u de aanvraag met een leeg 200 OK-antwoord. Wanneer GET- of HEAD-aanvraag de origin-header bevat (en daarom wordt verwerkt als een cross-origin-aanvraag) en niet overeen komt met cors-beleidsinstellingen: als het kenmerk is ingesteld op , wordt de aanvraag onmiddellijk beëindigd met een leeg true 200 OK-antwoord; Als het kenmerk is ingesteld op , staat u toe dat de aanvraag normaal verloopt en geen false CORS-headers aan het antwoord toevoegt. No true
preflight-result-max-age De header in het preflight-antwoord wordt ingesteld op de waarde van dit kenmerk en is van invloed op de mogelijkheid van de gebruikersagent om het pre Access-Control-Max-Age flight-antwoord in de cache op te nemen. No 0

Gebruik

Dit beleid kan worden gebruikt in de volgende beleidssecties en -scopes.

  • Beleidssecties: inkomende
  • Beleidsbereiken: alle scopes

JSONP

Het beleid voegt JSON met ondersteuning voor opvulling (JSONP) toe aan een bewerking of een API om aanroepen tussen domeinen toe te staan vanaf clients in jsonp een JavaScript-browser. JSONP is een methode die wordt gebruikt in JavaScript-programma's om gegevens op te vragen bij een server in een ander domein. JSONP omzeilt de beperking die wordt afgedwongen door de meeste webbrowsers waarbij de toegang tot webpagina's in hetzelfde domein moet zijn.

Beleidsverklaring

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

Voorbeeld

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

Als u de methode aanroept zonder de callbackparameter ?cb=XXX, retourneert deze gewone JSON (zonder een wrapper voor functie-aanroepen).

Als u de callbackparameter toevoegt, retourneert deze een JSONP-resultaat, waardoor de oorspronkelijke JSON-resultaten rond de ?cb=XXX callback-functie worden verpakt, zoals XYZ('<json result goes here>');

Elementen

Naam Beschrijving Vereist
jsonp Hoofdelement. Yes

Kenmerken

Naam Beschrijving Vereist Standaard
callback-parameter-name De JavaScript-functie voor meerdere domeinen roept het voorvoegsel aan met de fully qualified domain name waar de functie zich bevindt. Yes N.v.t.

Gebruik

Dit beleid kan worden gebruikt in de volgende beleidssecties en -scopes.

  • Beleidssecties: uitgaand
  • Beleidsbereiken: alle scopes

Volgende stappen

Zie voor meer informatie over het werken met beleidsregels: