microdot.cors — Cross-Origin Resource Sharing¶
Lägger till de huvuden som en webbläsare behöver för att tillåta JavaScript som körs på ett ursprung (origin) att anropa dina kameravärdda slutpunkter på ett annat ursprung. Klassen kopplar in sig själv i applikationens OPTIONS-hanterare (för preflight-begäranden) och after-request-hook (för Access-Control-*-huvudena på normala svar).
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
Instansen
microdot.Microdotatt koppla till. Får varaNoneför att skjuta upp inkopplingen; anropainitialize()senare.- allowed_origins
En lista med ursprungssträngar (
["https://app.example.com"]) eller den literala'*'för att tillåta valfritt ursprung. Ursprung som inte matchar denna lista får inga CORS-huvuden, vilket webbläsaren tolkar som ”denna begäran är inte tillåten”.- allow_credentials
Om
True, lägg tillAccess-Control-Allow-Credentials: trueså att webbläsaren skickar cookies och autentiseringshuvuden med begäranden mellan ursprung. Kan inte användas medallowed_origins='*'för någon begäran som behöver inloggningsuppgifter (webbläsare avvisar den kombinationen).- allowed_methods
Lista med metoder (
['GET', 'POST']) som webbläsaren får använda mellan ursprung.Nonebetyder valfri.- expose_headers
Lista med namn på svarshuvuden som webbläsaren får exponera för JavaScript.
- allowed_headers
Lista med namn på begäranhuvuden som klienter får inkludera mellan ursprung.
Nonebetyder valfri (ekar preflight-begäransAccess-Control-Request-Headers).- max_age
Sekunder som webbläsaren får cacha preflight-resultatet. Att hoppa över det innebär att webbläsaren omvaliderar varje preflight.
- handle_cors
Om
Falsekonfigureras klassen men kopplar inte faktiskt in sig själv – användbart när du vill kombinera dessget_cors_headers()-utdata manuellt med annan mellanprogramvara.
- get_cors_headers(request) dict¶
Beräkna uppsättningen
Access-Control-*-huvuden som gäller för request. Används internt av after-request-hooken; applikationer kan anropa den direkt när de avger CORS-huvuden från anpassad mellanprogramvara.
- allowed_origins: list | str | None¶
Den konfigurerade listan med ursprung, eller den literala
'*'. Speglar konstruktorargumentet allowed_origins; tilldela på nytt vid körning för att ändra policyn utan att bygga om objektet.
- allow_credentials: bool¶
Huruvida
Access-Control-Allow-Credentials: trueavges på matchande begäranden. Speglar konstruktorargumentet allow_credentials.
- allowed_methods: list | None¶
Lista med metodnamn som tillåts mellan ursprung, eller
Noneför ”valfri”. Speglar konstruktorargumentet allowed_methods.
- expose_headers: list | None¶
Lista med svarshuvuden som webbläsaren får exponera för JavaScript, eller
Noneför att utelämna huvudetAccess-Control-Expose-Headers. Speglar konstruktorargumentet expose_headers.
Exempel:
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}
Preflight-begäran OPTIONS hanteras automatiskt; kameran returnerar lämpliga Access-Control-*-huvuden och 204 No Content. Faktiska svar på GET / POST / osv. får huvudet Access-Control-Allow-Origin via den registrerade after-request-hooken.