[PYTHON] La manière la plus bâclée de prendre en charge CORS avec aiohttp Server

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

La manière la plus bâclée de prendre en charge CORS avec aiohttp Server
Remarques sur l'utilisation de matplotlib sur le serveur
Espace var insuffisant sur le serveur de messagerie
Découvrez les fonctions les plus yabe sur github
Publier le répertoire actuel sur le serveur Web
Exécutez des tâches en arrière-plan sur le serveur sur lequel vous vous êtes connecté
Conseils de dessin avec matplotlib côté serveur
Notebook Jupyter ouvert à distance lancé sur le serveur