Pour le support CORS [^ cors] lors de l'implémentation d'un serveur API avec aiohttp Server, un module appelé aiohttp_cors est fourni par le fonctionnaire aiohttp.
[^ cors]: Partage de ressources entre origines (CORS) --HTTP | MDN
Cependant, quand je lis Usage, il semble que ce n'est pas simple car il est nécessaire d'encapsuler chaque ressource et chaque route avec cors.add
. Il est pratique de pouvoir effectuer des réglages détaillés, mais il existe des cas où «je veux simplement autoriser toutes les demandes».
Donc, cette fois, j'écrirai sur la façon de gérer approximativement CORS sans utiliser aiohttp_cors.
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])
**C'est la fin. ** **
Ajoutez simplement l'en-tête ʻAccess-Control-Allow-Origin: * `à chaque réponse.
Si vous dites "Et à propos de *
", vous devriez être en mesure de spécifier l'origine qui est autorisée dans la variable d'environnement.
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])
En passant, cela ne correspond pas au cas où la demande de contrôle en amont vole. Si vous voulez répondre, faites un gars qui retournera toutes les requêtes ʻOPTION`.
C'est une histoire vraiment grossière, alors j'aimerais que vous vous demandiez si c'est correct pour la sécurité ou autre chose.
Recommended Posts