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