microdot.cors — Cross-Origin Resource Sharing¶
Lisää otsakkeet, joita selain tarvitsee salliakseen yhdellä alkuperällä toimivan JavaScriptin kutsua kameran isännöimiä päätepisteitäsi toisella alkuperällä. Luokka kytkee itsensä sovelluksen OPTIONS-käsittelijään (esitarkistuspyyntöjä varten) ja pyynnön jälkeiseen koukkuun (normaalien vastausten Access-Control-*-otsakkeita varten).
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
microdot.Microdot-instanssi, johon liitytään. Voi ollaNoneliittymisen lykkäämiseksi; kutsuinitialize()myöhemmin.- allowed_origins
Lista alkuperämerkkijonoja (
["https://app.example.com"]) tai kirjaimellinen'*', joka sallii minkä tahansa alkuperän. Alkuperät, jotka eivät täsmää tähän listaan, eivät saa CORS-otsakkeita, minkä selain tulkitsee tarkoittavan, että ”tämä pyyntö ei ole sallittu”.- allow_credentials
Jos
True, lisääAccess-Control-Allow-Credentials: true, jotta selain lähettää evästeet ja todennusotsakkeet alkuperien välisten pyyntöjen mukana. Ei voida käyttää yhdessä asetuksenallowed_origins='*'kanssa missään pyynnössä, joka tarvitsee tunnistetietoja (selaimet hylkäävät tämän yhdistelmän).- allowed_methods
Lista metodeista (
['GET', 'POST']), joita selain saa käyttää alkuperien välillä.Nonetarkoittaa mitä tahansa.- expose_headers
Lista vastausotsakkeiden nimistä, jotka selain saa paljastaa JavaScriptille.
- allowed_headers
Lista pyyntöotsakkeiden nimistä, joita asiakkaat saavat sisällyttää alkuperien välillä.
Nonetarkoittaa mitä tahansa (toistaa esitarkistuksenAccess-Control-Request-Headers-arvon).- max_age
Sekuntimäärä, jonka ajan selain saa tallentaa esitarkistuksen tuloksen välimuistiin. Sen ohittaminen tarkoittaa, että selain uudelleenvalidoi jokaisen esitarkistuksen.
- handle_cors
Jos
False, luokka konfiguroidaan mutta se ei varsinaisesti liitä itseään – hyödyllinen, kun haluat yhdistää senget_cors_headers()-tulosteen manuaalisesti muun väliohjelmiston kanssa.
- initialize(app: Microdot, handle_cors: bool = True)¶
Liittyy kohteeseen app, jos rakentaminen lykättiin.
- get_cors_headers(request) dict¶
Laskee joukon
Access-Control-*-otsakkeita, jotka koskevat pyyntöä request. Pyynnön jälkeinen koukku käyttää tätä sisäisesti; sovellukset voivat kutsua sitä suoraan lähettäessään CORS-otsakkeita mukautetusta väliohjelmistosta.
- allowed_origins: list | str | None¶
Konfiguroitu lista alkuperistä tai kirjaimellinen
'*'. Heijastaa konstruktorin argumenttia allowed_origins; aseta uudelleen ajonaikana muuttaaksesi käytäntöä ilman objektin uudelleenrakentamista.
- allow_credentials: bool¶
Lähetetäänkö
Access-Control-Allow-Credentials: truetäsmäävissä pyynnöissä. Heijastaa konstruktorin argumenttia allow_credentials.
- allowed_methods: list | None¶
Lista alkuperien välillä sallituista metodinimistä tai
Nonearvolle ”mikä tahansa”. Heijastaa konstruktorin argumenttia allowed_methods.
- expose_headers: list | None¶
Lista vastausotsakkeista, jotka selain saa paljastaa JavaScriptille, tai
NoneAccess-Control-Expose-Headers-otsakkeen poisjättämiseksi. Heijastaa konstruktorin argumenttia expose_headers.
Esimerkki:
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}
Esitarkistuksen OPTIONS-pyyntö käsitellään automaattisesti; kamera palauttaa asianmukaiset Access-Control-*-otsakkeet ja 204 No Content. Varsinaiset GET- / POST- yms. vastaukset saavat Access-Control-Allow-Origin-otsakkeen rekisteröidyn pyynnön jälkeisen koukun kautta.