microdot.cors — Cross-Origin Resource Sharing¶
Hozzáadja azokat a fejléceket, amelyekre a böngészőnek szüksége van ahhoz, hogy egy adott eredetről (origin) futó JavaScript meghívhassa a kamerán futtatott végpontjaidat egy másik eredetről. Az osztály beépül az alkalmazás OPTIONS kezelőjébe (az előzetes, preflight kérésekhez) és a kérés utáni hookba (a normál válaszokon szereplő Access-Control-* fejlécekhez).
class CORS¶
- class microdot.cors.CORS(app: Microdot | None = None, allowed_origins=None, allow_credentials: bool = False, allowed_methods: list | None = None, expose_headers: list | None = None, allowed_headers: list | None = None, max_age: int | None = None, handle_cors: bool = True)¶
- app
A csatolandó
microdot.Microdotpéldány. LehetNonea csatolás elhalasztásához; ekkor hívd meg ainitialize()metódust később.- allowed_origins
Eredet-karakterláncok listája (
["https://app.example.com"]), vagy a szó szerinti'*'bármely eredet engedélyezéséhez. Azok az eredetek, amelyek nem szerepelnek ezen a listán, nem kapnak CORS-fejléceket, amit a böngésző úgy értelmez, hogy „ez a kérés nem engedélyezett”.- allow_credentials
Ha
True, hozzáadja azAccess-Control-Allow-Credentials: truefejlécet, így a böngésző sütiket és hitelesítési fejléceket küld a cross-origin kérésekkel. Nem használható azallowed_origins='*'beállítással olyan kérés esetén, amelyhez hitelesítő adatok kellenek (a böngészők elutasítják ezt a kombinációt).- allowed_methods
Azon metódusok listája (
['GET', 'POST']), amelyeket a böngésző cross-origin használhat. ANonejelentése: bármelyik.- expose_headers
Azon válaszfejléc-nevek listája, amelyeket a böngésző elérhetővé tehet a JavaScript számára.
- allowed_headers
Azon kérésfejléc-nevek listája, amelyeket a kliensek cross-origin csatolhatnak. A
Nonejelentése: bármelyik (visszatükrözi a preflightAccess-Control-Request-Headersfejlécét).- max_age
Az a másodpercszám, ameddig a böngésző gyorsítótárazhatja a preflight eredményét. Kihagyása azt jelenti, hogy a böngésző minden preflightnál újraellenőriz.
- handle_cors
Ha
False, az osztály konfigurálva van, de valójában nem csatolja önmagát – hasznos, ha aget_cors_headers()kimenetét manuálisan szeretnéd más middleware-rel kombinálni.
- initialize(app: Microdot, handle_cors: bool = True)¶
Csatolódik az app-hoz, ha a létrehozás el lett halasztva.
- get_cors_headers(request) dict¶
Kiszámítja az request-re vonatkozó
Access-Control-*fejlécek halmazát. A kérés utáni hook belsőleg használja; az alkalmazások közvetlenül is meghívhatják, amikor egyéni middleware-ből bocsátanak ki CORS-fejléceket.
- allowed_origins: list | str | None¶
A beállított eredetek listája, vagy a szó szerinti
'*'. Tükrözi az allowed_origins konstruktorargumentumot; futásidőben újra értékül adva megváltoztathatod a házirendet az objektum újraépítése nélkül.
- allow_credentials: bool¶
Hogy az
Access-Control-Allow-Credentials: trueki van-e bocsátva az illeszkedő kérésekre. Tükrözi az allow_credentials konstruktorargumentumot.
- allowed_methods: list | None¶
A cross-origin engedélyezett metódusnevek listája, vagy
Nonea „bármelyik” jelentéshez. Tükrözi az allowed_methods konstruktorargumentumot.
- expose_headers: list | None¶
Azon válaszfejlécek listája, amelyeket a böngésző elérhetővé tehet a JavaScript számára, vagy
NoneazAccess-Control-Expose-Headersfejléc kihagyásához. Tükrözi az expose_headers konstruktorargumentumot.
Példa:
from microdot import Microdot
from microdot.cors import CORS
app = Microdot()
CORS(app,
allowed_origins=['https://dashboard.example.com'],
allow_credentials=True,
max_age=86400)
@app.get('/api/status')
async def status(request):
return {'ok': True}
A preflight OPTIONS kérés automatikusan kezelődik; a kamera visszaadja a megfelelő Access-Control-* fejléceket és a 204 No Content választ. A tényleges GET / POST / stb. válaszok a regisztrált kérés utáni hookon keresztül kapják meg az Access-Control-Allow-Origin fejlécet.