Megosztás a következőn keresztül:


CORS

A KÖVETKEZŐRE VONATKOZIK: Minden API Management-szint

A cors szabályzat több forrásból származó erőforrás-megosztási (CORS-) támogatást ad egy művelethez vagy EGY API-hoz, hogy lehetővé tegye a böngészőalapú ügyfelek tartományközi hívásait.

Feljegyzés

Állítsa be a szabályzat elemeit és gyermekelemeit a szabályzatutasításban megadott sorrendben. A szabályzat konfigurálásához a portál egy irányított, űrlapalapú szerkesztőt biztosít. További információ az API Management-szabályzatok beállításáról és szerkesztéséről.

Szabályzatutasítás

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

Attribútumok

Név Leírás Kötelező Alapértelmezett
hitelesítő adatok engedélyezése Az Access-Control-Allow-Credentials elővizsgálati válasz fejléce ennek az attribútumnak az értékére lesz beállítva, és befolyásolja az ügyfél azon képességét, hogy tartományközi kérelmekben küldjön hitelesítő adatokat. A szabályzatkifejezések engedélyezettek. Nem false
megszakítás–nem egyező kérés Szabályozza a házirend-beállításoknak nem megfelelő keresztirányú kérések feldolgozását. A szabályzatkifejezések engedélyezettek.

Ha OPTIONS a kérés előzetes kérésként van feldolgozva, és Origin a fejléc nem egyezik a szabályzat beállításaival:
- Ha az attribútum értéke be van állítva true, azonnal állítsa le a kérést üres 200 OK válaszsal
- Ha az attribútum értéke be van állítva false, ellenőrizze a bejövő elem közvetlen gyermekeit tartalmazó, hatókörön belüli cors egyéb szabályzatokat, és alkalmazza őket. Ha nem cors találhatók szabályzatok, a kérést üres 200 OK válaszsal fejezheti be.

Ha GET a kérelem tartalmazza HEAD a Origin fejlécet (és ezért egyszerű forrásközi kérésként dolgozzák fel), és nem felel meg a szabályzat beállításainak:
- Ha az attribútum értéke be van állítva true, azonnal állítsa le a kérést üres 200 OK válaszsal.
- Ha az attribútum értéke be van állítva false, hagyja, hogy a kérés a szokásos módon haladjon, és ne adjon hozzá CORS-fejléceket a válaszhoz.
Nem true

Elemek

Név Leírás Kötelező Alapértelmezett
engedélyezett eredetűek Olyan elemeket tartalmaz origin , amelyek a tartományközi kérelmek engedélyezett eredetét írják le. allowed-origins tartalmazhat egyetlen origin elemet, amely bármely forrás engedélyezését megadja * , vagy egy vagy több origin URI-t tartalmazó elemet. Igen n/a
engedélyezett metódusok Ez az elem akkor szükséges, ha a metódusok nem GET vagy POST csak engedélyezettek. A támogatott HTTP-parancsokat meghatározó elemeket tartalmaz method . Az érték * az összes metódust jelzi. Nem Ha ez a szakasz nem jelenik meg, GET és POST támogatott.
engedélyezett fejlécek Ez az elem olyan elemeket tartalmaz header , amelyek megadják a kérelemben szereplő fejlécek nevét. Igen n/a
közzétett fejlécek Ez az elem olyan elemeket tartalmaz header , amelyek megadják az ügyfél által elérhető fejlécek nevét. Nem N.A.

Figyelemfelhívás

Használja a * helyettesítő karaktert óvatosan a házirend-beállításokban. Ez a konfiguráció túlságosan megengedő lehet, és sebezhetőbbé teheti az API-t bizonyos API-biztonsági fenyegetésekkel szemben.

engedélyezett eredetű elemek

Név Leírás Kötelező Alapértelmezett
forrás (origin) Az érték lehet * az összes forrás engedélyezése, vagy egy URI, amely egyetlen forrást határoz meg. Az URI-nak sémát, gazdagépet és portot kell tartalmaznia. Ne tartalmazzon idézőjeleket. Igen Ha a port hiányzik egy URI-ban, a HTTP-hez a 80-at, a HTTPS-hez pedig a 443-at használja a rendszer.

engedélyezett metódusok attribútumai

Név Leírás Kötelező Alapértelmezett
preflight-result-max-age Az Access-Control-Max-Age elővizsgálati válasz fejléce ennek az attribútumnak az értékére lesz beállítva, és befolyásolja a felhasználói ügynök azon képességét, hogy gyorsítótárazza az elővizsgálati választ. A szabályzatkifejezések engedélyezettek. Nem 0

engedélyezett metódusok elemei

Név Leírás Kötelező Alapértelmezett
metódus HTTP-parancsot ad meg. A szabályzatkifejezések engedélyezettek. Legalább egy method elem szükséges, ha a allowed-methods szakasz jelen van. n/a

engedélyezett fejlécelemek

Név Leírás Kötelező Alapértelmezett
header Megadja a fejléc nevét. Legalább egy header elem szükséges allowed-headers , ha az adott szakasz jelen van. n/a

közzétett fejlécek elemei

Név Leírás Kötelező Alapértelmezett
header Megadja a fejléc nevét. Legalább egy header elem szükséges expose-headers , ha az adott szakasz jelen van. n/a

Használat

Használati megjegyzések

  • A szabályzatot több hatókörben is konfigurálhatja cors (például a termék hatókörében és a globális hatókörben). Győződjön meg arról, hogy az base elem konfigurálva van a művelet, az API és a termék hatókörében, hogy örökölje a szükséges szabályzatokat a szülő hatókörökben.
  • Az elővizsgálat során csak a cors szabályzat lesz kiértékelve a OPTIONS kérelem alapján. A fennmaradó konfigurált szabályzatok kiértékelése a jóváhagyott kérelem alapján történik.
  • Ez a szabályzat csak egyszer használható egy szabályzatszakaszban.

Tudnivalók a CORS-ról

A CORS egy HTTP fejlécalapú szabvány, amely lehetővé teszi a böngésző és a kiszolgáló közötti interakciót, és meghatározza, hogy engedélyezi-e a különböző eredetű kéréseket (XMLHttpRequest a JavaScriptről a weblapról más tartományokba irányuló hívásokat). Ez nagyobb rugalmasságot tesz lehetővé, mint az azonos eredetű kérelmek engedélyezése, de biztonságosabb, mint az összes forrásközi kérés engedélyezése.

A CORS kétféle forrásközi kérést határoz meg:

  • Előzetes (vagy "előzetes") kérések – A böngésző először http-kérést küld a OPTIONS metódussal a kiszolgálónak, hogy megállapítsa, a tényleges kérés elküldhető-e. Ha a kiszolgáló válasza tartalmazza a Access-Control-Allow-Origin hozzáférést lehetővé tevő fejlécet, a böngésző a tényleges kérést követi.

  • Egyszerű kérések – Ezek a kérések egy vagy több további Origin fejlécet tartalmaznak, de nem aktiválnak CORS-elővizsgálatot. Csak a metódusokat és HEAD a GET kérelemfejlécek korlátozott készletét használó kérések engedélyezettek.

cors szabályzatforgatókönyvek

Konfigurálja a szabályzatot az cors API Managementben a következő forgatókönyvekhez:

  • Engedélyezze az interaktív tesztkonzolt a fejlesztői portálon. A részletekért tekintse meg a fejlesztői portál dokumentációját.

    Feljegyzés

    Ha engedélyezi a CORS-t az interaktív konzolon, az API Management alapértelmezés szerint a globális hatókörben konfigurálja a cors szabályzatot.

  • Engedélyezze API Managementet, hogy válaszolhasson az elővizsgálati kérelmekre, vagy továbbítsa az egyszerű CORS-kéréseket, ha a háttérrendszer nem nyújt saját CORS-támogatást.

    Feljegyzés

    Ha egy kérelem egyezik az API-ban meghatározott metódussal egyező OPTIONS művelettel, a rendszer nem hajtja végre a cors szabályzathoz társított előzetes kérésfeldolgozási logikát. Ezért ezek a műveletek használhatók egyéni előzetes feldolgozási logika implementálásához – például a cors szabályzat csak bizonyos feltételek mellett történő alkalmazásához.

Konfigurációval kapcsolatos gyakori problémák

  • Előfizetési kulcs a fejlécben – Ha a szabályzatot a cors termék hatókörében konfigurálja, és az API az előfizetési kulcs hitelesítését használja, a szabályzat nem fog működni, amikor az előfizetési kulcsot átadják egy fejlécben. Áthidaló megoldásként módosítsa a kéréseket úgy, hogy az tartalmazza az előfizetési kulcsot lekérdezési paraméterként.
  • API fejléc-verziószámozással – Ha a szabályzatot az cors API-hatókörben konfigurálja, és az API fejlécverzió-sémát használ, a szabályzat nem fog működni, mert a verzió egy fejlécben van átadva. Előfordulhat, hogy egy alternatív verziószámozási módszert kell konfigurálnia, például egy elérési utat vagy egy lekérdezési paramétert.
  • Szabályzatrend – Váratlan viselkedést tapasztalhat, ha nem a cors házirend az első szabályzat a bejövő szakaszban. A szabályzatszerkesztőben válassza az Érvényes szabályzat kiszámítása lehetőséget a szabályzat kiértékelési sorrendjének ellenőrzéséhez az egyes hatókörökben. Általában csak az első cors szabályzatot alkalmazza a rendszer.
  • Üres 200 OK-válasz – Egyes szabályzatkonfigurációkban egyes forrásközi kérések üres 200 OK választ adnak. Ez a válasz akkor várható, ha terminate-unmatched-request az alapértelmezett értékre true van állítva, és a bejövő kérések fejléce Origin nem egyezik a cors házirendben konfigurált engedélyezett forráskódokkal.

Példa

Ez a példa bemutatja, hogyan támogathatók az előzetes kérések, például az egyéni fejlécekkel vagy más metódusokkal rendelkező kérésekGETPOST. Az egyéni fejlécek és más HTTP-parancsok támogatásához használja az allowed-methods alábbi példában látható szakaszokat és allowed-headers szakaszokat.

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

A szabályzatok használatával kapcsolatos további információkért lásd: