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
- Szabályzatszakaszok: bejövő
- Szabályzathatókörök: globális, munkaterület, termék, API, művelet
- Átjárók: klasszikus, v2, használat, saját üzemeltetésű, munkaterület
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 azbase
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 aOPTIONS
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 aAccess-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 ésHEAD
aGET
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 acors
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 acors
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ó, haterminate-unmatched-request
az alapértelmezett értékretrue
van állítva, és a bejövő kérések fejléceOrigin
nem egyezik acors
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ésekGET
POST
. 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>
Kapcsolódó szabályzatok
Kapcsolódó tartalom
A szabályzatok használatával kapcsolatos további információkért lásd:
- Oktatóanyag: AZ API átalakítása és védelme
- Szabályzathivatkozás a szabályzatutasságok és azok beállításainak teljes listájához
- Házirend-kifejezések
- Házirendek beállítása vagy szerkesztése
- Szabályzatkonfigurációk újrafelhasználása
- Szabályzatrészletek adattára
- Azure API Management policy toolkit
- Szabályzatok létrehozása a Microsoft Copilot használatával az Azure-ban