[PYTHON] Der schlampigste Weg, CORS mit aiohttp Server zu unterstützen

Für die Unterstützung von CORS [^ cors] bei der Implementierung eines API-Servers mit aiohttp Server wird vom aiohttp-Mitarbeiter ein Modul namens aiohttp_cors bereitgestellt.

[^ cors]: gemeinsame Nutzung von Ressourcen zwischen Ursprüngen (CORS) --HTTP | MDN

Wenn ich jedoch Usage lese, scheint es nicht einfach zu sein, da es notwendig ist, jede Ressource und jede Route mit "cors.add" zu umschließen. Es ist praktisch, detaillierte Einstellungen vornehmen zu können, aber es gibt Fälle, in denen "Ich möchte nur alle Anforderungen zulassen".

Dieses Mal werde ich darüber schreiben, wie man CORS grob behandelt, ohne aiohttp_cors zu verwenden.

from aiohttp import web

@web.middleware
async def cors_middleware(request, handler):
    response = await handler(request)
    response.headers['Access-Control-Allow-Origin'] = '*'
    return response

app = web.Application(middlewares=[cors_middleware])

**Es ist das Ende. ** ** **

Fügen Sie einfach den Header "Access-Control-Allow-Origin: *" zu jeder Antwort hinzu.

Wenn Sie "Was ist mit" * "sagen, sollten Sie in der Lage sein, den Ursprung anzugeben, der in der Umgebungsvariablen zulässig ist.

import os
from aiohttp import web

@web.middleware
async def cors_middleware(request, handler):
    response = await handler(request)
    response.headers['Access-Control-Allow-Origin'] = os.environ.get('CORS_ALLOW_ORIGIN', '*')
    return response

app = web.Application(middlewares=[cors_middleware])

Übrigens entspricht es nicht dem Fall, in dem Preflight Request fliegt. Wenn Sie antworten möchten, können Sie einen Mann einstellen, der alle OPTION-Anfragen zurückgibt.

Es ist eine wirklich grobe Geschichte, also möchte ich, dass Sie darüber nachdenken, ob es für die Sicherheit oder etwas anderes in Ordnung ist.

Recommended Posts

Der schlampigste Weg, CORS mit aiohttp Server zu unterstützen
Hinweise zur Verwendung von matplotlib auf dem Server
Nicht genügend var-Speicherplatz auf dem Mailserver
Entdecken Sie die meisten Yabe-Funktionen auf Github
Veröffentlichen Sie das aktuelle Verzeichnis auf dem Webserver
Führen Sie Aufgaben im Hintergrund auf dem Server aus, an den Sie gesendet haben
Zeichentipps mit matplotlib auf der Serverseite
Öffnen Sie das auf dem Server gestartete Jupyter-Notizbuch aus der Ferne